鱼C论坛

 找回密码
 立即注册
查看: 2507|回复: 1

[已解决]java中List的add用法问题

[复制链接]
发表于 2022-3-5 11:27:59 | 显示全部楼层 |阅读模式
20鱼币
在做题的过程中,我先定义了两个List
List<List<Integer>> ans = new ArrayList<List<Integer>>();
List<Integer> t = new ArrayList<Integer>();
..............
t.add(nums[j]);
t.add(nums[i]);
t.add(nums[k]);
ans.add(t);
t.clear();
System.out.println(t);
System.out.println(ans);

在进行这一系列的操作后我的return答案ans得到的竟然是一个空的数组。

                               
登录/注册后可看大图

我不理解的是java中的add用法为什么将 t 插入到 ans 中后ans[0]仍然用的是 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集合地址的引用时,也是空的

最佳答案

查看完整内容

Java中的map、list、set、map之类的集合容器中只能存放引用类型,而不能存放类似于int、double之类的基本类型。 所以ans集合添加 的是t集合的引用,即指向t集合的地址,t集合清空了,所以打印ans集合时,即打印指向t集合地址的引用时,也是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-5 11:28:00 | 显示全部楼层    本楼为最佳答案   
Java中的map、list、set、map之类的集合容器中只能存放引用类型,而不能存放类似于int、double之类的基本类型。
ans.add(t);

所以ans集合添加 的是t集合的引用,即指向t集合的地址,t集合清空了,所以打印ans集合时,即打印指向t集合地址的引用时,也是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-3 07:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表