ArrayList<ArrayList<String>> a=new ArrayList<ArrayList<String>>();
ArrayList<ArrayList<String>> b=new ArrayList<ArrayList<String>>();
ArrayList<String> score=new ArrayList<String>();
for(int k=0;k<2;k++){
score.add("1");
}
a.add(score);
score.clear();
for(int k=0;k<2;k++){
score.add("2");
}
b.add(score);
预期的结果为:
a:[["1","1"]]
b:[["2","2"]]
但实际结果为:
a:[["2","2"]]
b:[["2","2"]]
原来,集合按地址传递,a和b的值都指向score,一开始score为:["1","1"],但是执行clear()后,再add,变为:["2","2"]
所以a的值从1变为2