正确写法:
ArrayList<ArrayList<Integer>> numbers = new ArrayList<>();
ArrayList<Integer> number = new ArrayList<>();
// 初始化数据
int index = 0;
for (int i = 0; i < 9; i ++) {
if (i % 3 != 0) {
index ++;
number.add(i);
if (index == 2) {
System.out.println("原数据 " + numbers.toString());
numbers.add(number);
System.out.println("加数据 " + numbers.toString());
index = 0;
//注意这里
number = new ArrayList<>();
}
System.out.println("----------------------------------------");
}
}
}
打印结果:
----------------------------------------
原数据 []
加数据 [[1, 2]]
----------------------------------------
----------------------------------------
原数据 [[1, 2]]
加数据 [[1, 2], [4, 5]]
----------------------------------------
----------------------------------------
原数据 [[1, 2], [4, 5]]
加数据 [[1, 2], [4, 5], [7, 8]]
----------------------------------------
如果
number = new ArrayList<>();
改成
number.clear();
打印结果就会不一样
原数据 []
加数据 [[1, 2]]
----------------------------------------
----------------------------------------
原数据 [[4, 5]]
加数据 [[4, 5], [4, 5]]
----------------------------------------
----------------------------------------
原数据 [[7, 8], [7, 8]]
加数据 [[7, 8], [7, 8], [7, 8]]
结果被最后加入的占据了
我开始一度怀疑是编译器出问题了
网友评论