List使用add方法添加对象-只显示最后添加的数据的问题

本文探讨了在Java中使用List存储数组的正确方法。通过对比不同的实现方式,解释了为何直接复用数组对象会导致数据覆盖,并提供了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List<String[]> list = new LinkedList<String[]>();
String[] strs = new String[2];
for(int i = 0; i < 100; i++){
strs[0] = "1";
strs[1] = "2";
list.add(strs);
}
这样,list中的所有数据将会是最后录入的一条数据,因为加入的是它的引用的地址


List<String[]> list = new LinkedList<String[]>();
for(int i = 0; i < 100; i++){
String[] strs = new String[2];
strs[0] = "1";
strs[1] = "2";
list.add(strs);
}

只有每次都新建一个新的数组,才能够保存想要的数据


其实错误在于,list是引用类型,add方法加入的是引用地址,如果orderInfo的初始化放在for循环外面,


那么orderInfo的实例对象只有一个,list中添加的每一个orderInfo里面的内容都是相同的,都为每一次for循环获取的值。


所以orderInfo对象要在for循环内部定义,用的时候定义,每一次创建新的对象!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值