我编写了一个将2d列表中的数组元素求和并添加到1d列表中的函数:
ArrayList<Integer> sumList(ArrayList<int[][]> list,int side){
ArrayList<Integer> sums= new ArrayList<Integer>();
for(int[][] array : list){
int arraySum = 0;
//arraySum += CalcMove(array,side);
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
arraySum+=array[i][j];
}
}
sums.add(arraySum);
//println(arraySum);
}
println(sums);
//sums.add(0);
//println(sums);
return sums;
}
问题是,结果完全不相关,模棱两可,甚至没有列出。 println结果:
[-232,-232,-232]
-232 [-232,-232,-232]
-232 [-223,-223,-223]
-223 [-223,-223,-223,-223]
-223 [-219,-219,-219]
-219 [-214,-214,-214]
-214 [-14,-14,-14]
-14 [-10,-10,-10]
-10 [-5,-5,-5]
-5 [-4,-4,-4,-4]
-4 [-4,-4,-4,-4]
-4 [-4,-4,-4,-4]
-4 [-4,-4,-4,-4]
-4 [-4,-4,-4,-4]
-4 [-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4]
-4 []
但是,当我在循环外添加另一个元素(在这种情况下,它为零)时,结果将是确定的(我仍然不确定是否是这样)。之后的println结果:
[-232,-232,-232、0]
我对此完全感到困惑,因为我很确定该函数没有任何问题,因为我进行了单独测试,并且一切正常。它不可能是arraylist,因为我用c#编写了整个项目,并且也很好用。
最佳答案
这是一种将2d数组中的所有整数收集并放入列表中的方法。
public static List<Integer> listElements(int[][] array) {
List<Integer> list = new ArrayList<Integer>();
for (int[] subArray : array) {
IntStream.of(subArray).forEach(i -> list.add(i));
}
return list;
}