list.clear() 代码行注释说明
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<2000;i++){
list.add(2);
list.add(2);
list.add(2);
}
List<List<Integer>> listList = new ArrayList<>();
List<Integer> listtwo = new ArrayList<>();
for(int i=0;i<list.size();i++){
listtwo.add(list.get(i));
}
listList.add(listtwo);
listtwo.clear(); //执行该方法后 listList 也会变空?疑问处
for(List<Integer> item:listList) {
for(Integer temp:item) {
System.out.println(temp);
}
}
结帖:
再看某些源码中发现该例子场景,代码说明由于listList 存入的T 型是个引用类型,故在listtwo.clear()后该list清空,即所有申明指向listtwo 的引用由于地址一致,所以listList 中元素也为空!例如可用例用引用在一个void 返回值方法中对引用类型最一些操作。 以上供参考。如有不一致,请回复指正。
本文探讨了Java中ArrayList的clear()方法行为,解释了当一个列表被清空后,包含其引用的其他集合也会受到影响的现象。通过示例代码,深入分析了引用类型在集合操作中的作用机制。
1161

被折叠的 条评论
为什么被折叠?



