A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        为什么结果是[[], []]        而不是[[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);
        }

4 个回复

倒序浏览
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayList中删除了值,即ArrayList里的值也会发生改变
回复 使用道具 举报
My_Android 发表于 2016-6-6 11:55
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayLis ...

太给力了大神,谢谢。
回复 使用道具 举报
My_Android 发表于 2016-6-6 11:55
因为ArrayList容器里的值,是指向IntegerArrayList的内容空间地址,他们是同一个对象,你在IntegerArrayLis ...

请问大神,有没有什么办法可以解决呢?
回复 使用道具 举报
TS-松子 发表于 2016-6-6 12:03
请问大神,有没有什么办法可以解决呢?

这个我暂时没有什么思路解决, 你可以参考数组的拷贝,自己弄一个容器的拷贝
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马