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