黑马程序员技术交流社区

标题: 为什么这样?有什么解决办法? [打印本页]

作者: TS-松子    时间: 2016-6-6 11:50
标题: 为什么这样?有什么解决办法?
        为什么结果是[[], []]        而不是[[1], [2]]
public static void main(String[] args) {
                ArrayList<ArrayList> arrayList = new ArrayList<ArrayList>();
                ArrayList<Integer> arr = new ArrayList<Integer>();
                arr.add(1);
                arrayList.add(arr);
                arr.remove(0);
                arr.add(2);
                arrayList.add(arr);
                arr.remove(0);
                System.out.println(arrayList);
        }
作者: My_Android    时间: 2016-6-6 11:55
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayList中删除了值,即ArrayList里的值也会发生改变
作者: TS-松子    时间: 2016-6-6 12:01
My_Android 发表于 2016-6-6 11:55
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayLis ...

太给力了大神,谢谢。
作者: TS-松子    时间: 2016-6-6 12:03
My_Android 发表于 2016-6-6 11:55
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayLis ...

请问大神,有没有什么办法可以解决呢?
作者: My_Android    时间: 2016-6-6 12:44
TS-松子 发表于 2016-6-6 12:03
请问大神,有没有什么办法可以解决呢?

这个我暂时没有什么思路解决, 你可以参考数组的拷贝,自己弄一个容器的拷贝




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2