monkey-D 发表于 2022-3-5 11:27:59

java中List的add用法问题

在做题的过程中,我先定义了两个List
List<List<Integer>> ans = new ArrayList<List<Integer>>();
List<Integer> t = new ArrayList<Integer>();
..............
t.add(nums);
t.add(nums);
t.add(nums);
ans.add(t);
t.clear();
System.out.println(t);
System.out.println(ans);

在进行这一系列的操作后我的return答案ans得到的竟然是一个空的数组。
https://img-mid.csdnimg.cn/release/static/image/mid/ask/024916944646122.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit
我不理解的是java中的add用法为什么将 t 插入到 ans 中后ans仍然用的是 t 的地址,而不是复制一份放到自己的地址里面( t 清零ans里就清零是这样理解的吗)。另外有没有其他的解决这个问题的办法,难道必须得每次循环都创建一个新的List吗?

小伤口 发表于 2022-3-5 11:28:00

Java中的map、list、set、map之类的集合容器中只能存放引用类型,而不能存放类似于int、double之类的基本类型。
ans.add(t);
所以ans集合添加 的是t集合的引用,即指向t集合的地址,t集合清空了,所以打印ans集合时,即打印指向t集合地址的引用时,也是空的
页: [1]
查看完整版本: java中List的add用法问题