首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

List<List<String>> 后加元素覆盖,该如何解决

2013-10-11 
ListListString 后加元素覆盖public class listlistText {public static void main(String[] args) {L

List<List<String>> 后加元素覆盖
public class listlistText {
public static void main(String[] args) {

List<List<String>> list0 = new ArrayList<List<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("ZS");
list0.add(list1);
System.out.println("&&&&&&&&&&&0"+list0.toString());  //输出[[ZS]]

//List<String> list2 = new ArrayList<String>();
list1.clear();
System.out.println("&&&&&&&&&&&1"+list0.toString());  //输出[[]]
list1.add("LS");
list0.add(list1);
System.out.println("&&&&&&&&&&&2"+list0.toString());  //输出[[LS], [LS]]

//List<String> list3 = new ArrayList<String>();
list1.clear();
System.out.println("&&&&&&&3"+list0.toString());  //输出[[], []]
list1.add("WW");
list0.add(list1);

System.out.println("&&&&&&&4"+list0.toString()); //输出[[WW], [WW], [WW]]

}
}



[解决办法]
这不是覆盖,这个由于引用地址的原因
原本list0的0位置指向list1  list1中添加ZS,打印当然是ZS,然后你clear掉list1,所以打印为空,后来list1中加入LS,然后又在list0的1位置指向list1,相当于list0中的0和1同时指向list1的内存地址,所以打印就是[[LS],[LS]]了撒,下面就是一样的道理了

热点排行