循环中向List添加对象后元素重复的技术求助
问题解决:循环添加对象到列表后元素重复的原因及修复
问题原因
你只创建了一个People对象,循环过程中只是反复修改这个对象的name和age属性,然后把同一个对象的引用添加到列表里。列表里的所有元素本质上指向内存中的同一个对象,所以最终所有元素都会显示最后一次循环修改后的属性值。
修复方法
把People对象的创建逻辑放到循环内部,这样每次循环都会生成一个全新的People实例,列表就能存储不同对象的引用了。
修正后的代码:
List<People> peopleList = new ArrayList<People>(); public void test() { for(int i=0;i<2;i++){ // 每次循环创建新的People对象 People people = new People(); people.name = "name "+i; people.age = "age "+i; peopleList.add(people); } }
说明
修改后,每次循环都会在内存中生成独立的People对象,各自的属性值对应循环的i值,最终列表里的两个元素就是完全不同的对象,属性也会符合你的预期。
内容的提问来源于stack exchange,提问作者user9515607
相关产品推荐
相关产品推荐

