我编写了一个函数,它总结了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 []
但是当我在循环外添加另一个元素(在这种情况下它为零)时,结果将是正常的(我仍然不确定)。之后的println结果:
[ - 232,-232,-232,0]
我对此完全感到困惑,因为我很确定该功能没有任何问题,因为我单独测试并且它工作得很好。它不可能是arraylist因为我用c#编写了整个项目并且它的工作也很好。
答案 0 :(得分:1)
这是一个收集二维数组中所有整数并将它们放入列表的方法。
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;
}