【问题标题】:Convert a 2d double array to 2d double arraylist将二维双精度数组转换为二维双精度数组列表
【发布时间】:2015-02-15 01:25:05
【问题描述】:

我有一个 2D Double 数组正在扩展,我不确定它的最终大小,因此我想将它转换为 2d 数组列表,但不知道如何执行此操作我尝试先定义数组列表并使用 addAll( Array) 方法,但它不起作用。有什么建议吗?

我刚刚编写了这段代码,我认为它可以正常工作,但我正在寻找更有效的方法

public class trial {    

 public static void main(String[] arg){

    double[][] Solutions_to_arrange={{1,5,2,8,4,70,50,80},{3,7,4,2,6,60,30,70},{8,1,6,4,2,10,40,60}};
    ArrayList<ArrayList<Double>> Solutions_to_arrange_A=new ArrayList<ArrayList<Double>>();
    for(int i=0;i<Solutions_to_arrange.length;i++){
        Solutions_to_arrange_A.add(new ArrayList<Double>());
        for(int j=0;j<Solutions_to_arrange[0].length;j++){
            Solutions_to_arrange_A.get(i).add(Solutions_to_arrange[i][j]);
        }
    }

    }
}

我也对发表声明有疑问

Solutions_to_arrange_A.add(new ArrayList<Double>());

我应该把它放在循环内还是在循环外只调用一次就足够了

【问题讨论】:

  • 请发布您的代码和您遇到的错误。
  • 它是否在两个维度上都在扩展?你想要ArrayList&lt;ArrayList&lt;Double&gt;&gt;,还是ArrayList&lt;Double[]&gt;,还是别的什么?
  • ArrayList>
  • 您的双循环代码有效(我试过了)。不幸的是,由于您已将数组定义为double[][] 而不是Double[][],因此据我所知,真的没有办法做得更好。如果您将其设为Double[][],则必须在每个整数后加上.0,因为Java 不喜欢自动将未装箱的int 转换为装箱的Double。但是,如果您同时执行这两项操作,您可以使用arrays.asList 编写带有single 循环的代码。但这仅适用于一维,因此您仍然需要一个循环。
  • (或者你可以在每个整数后面加上D

标签: java arrays arraylist 2d


【解决方案1】:

试试看:

    Double[][] matriz = {{1d,5d,2d,8d,4d,70d,50d,80d},{3d,7d,4d,2d,6d,60d,30d,70d},{8d,1d,6d,4d,2d,10d,40d,60d}};

    List<List> result = new ArrayList<>();
    for(Double[] array : matriz){
        result.add( Arrays.asList(array) );
    }

如果我们在“Arrays.asList”中使用原始类型,我们将得到一个列表,其中一个原始数组作为其唯一项。使用对象类型它可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多