java 中list中后面的对象覆盖前面的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中list中后面的对象覆盖前面的对象相关的知识,希望对你有一定的参考价值。

List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 2; i++)
Student stu= new Student();
stu= manager.getById("0001");//从数据库中查询
stu.setCount(i);
list.add(stu);

for (Student stu : list)
System.out.println(stu.getCount());

打印:1,1。后面添加的一个对象覆盖前面一个对象
@Autowired
private StuManager stuManager;

public void getInfo()
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 2; i++)
Student stu= new Student();
stu= stuManager.getById("O001");
stu.setCount(i);
list.add(stu);

for (Student stu : list)
System.out.println(stu.getCount());


打印:0,1。后面添加的一个对象覆盖前面一个对象

新建对象,不可能覆盖啊,第二次执行不是0,1了吗,这不就没有覆盖了吗。
出现第一次的情况可能是你把Student类的count属性设置成static了,这样你改变一次count,所有Student实例对象的count值都变成一样的了。
参考技术A 你的student 类也要贴出来看看 参考技术B 未指定数组长度的缘故吧..追问

代码贴出来了

来自:求助得到的回答
参考技术B 你用LinkedHashMap
就能保证唯一,且有序了追问

我每个Student对象都是新建的,为什么list中后面的对象还会覆盖前面的对象呢?

追答

stu= manager.getById("0001");

每次返回来的是同一个对象啊
你setCount(2)的时候就变了。

java数据放List前面数据被覆盖

List<Product> proList = pr.getList();
List<OnlineApplyProduct> rList=new ArrayList<OnlineApplyProduct>();

for (Product po : proList)

OnlineApplyProduct oap=new OnlineApplyProduct();
oap=productService.getVo(po);

rList.add(oap);


rList里的数据会被覆盖

因为里面的数据是自定义类,所以是会被修改的 参考技术A 不可能会被覆盖,除非你有调用clear()方法,或是你的集合定义在一个方法里,然后你的程序走出了这个方法,再回来的时候,前面的数据肯定是没有的。希望可以帮到你。

以上是关于java 中list中后面的对象覆盖前面的对象的主要内容,如果未能解决你的问题,请参考以下文章

Object.assign 合并多个对象的属性,如果是对象有同名属性,则后面对象的属性值覆盖前面的。

java数据放List前面数据被覆盖

Gson 中 JsonArray添加JsonObject覆盖前面了

list.add()覆盖问题

JS——数组中push对象,覆盖问题,每次都创建一个新的对象

ArrayList.add后,前面数据被覆盖的问题及解决方法