`

循环往list中add对象却总是add的是一个对象

阅读更多
1. 在new 一个对象的时候,对象的ID是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单  的set 对象的属性,set新的属性值,而add进list中的对象还是同一个对象id,也就是同一个对象;
2. 所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中的对象是重复的对象。
3. 想要避免这个问题只要每次add时保证对象引用都是不同的即可,即每循环一次重新new一个对象。
4. // new的对象应该放在for循环内,每循环一次重新new一个新对象


        List<User>  list = new ArrayList<User>();
        User user = new User();
        for(int i=0;i<10;i++ ){
            user.setUsername("test"+i);
            user.setPassword("password"+i);
            
            list.add(user);
        }
        
// 以上得到的list集合每个元素都是最后一次循环的对象,重复,每次set改变的是同一地址对象的值
        
// 解决办法:将new对象拿到循环体内,能够得到预期的结果,每次创建一个新地址存放新对象

        List<User>  list = new ArrayList<User>();
        for(int i=0;i<10;i++ ){
            User user = new User();
            user.setUsername("test"+i);
            user.setPassword("password"+i);
            
            list.add(user);
        }
分享到:
评论

相关推荐

    两个list比较 取不同的对象

    - 如果发现两个列表中有相同的`Student`对象,则从第一个列表中移除该对象。 - 移除后需要更新循环变量,以避免遗漏元素。 3. **使用`Iterator`遍历结果列表**: - 最后,使用`Iterator`来安全地遍历剩余的`...

    java 中如何从LIST 对象取值

    在这个例子中,我们创建了一个`ArrayList`对象`aList`,然后添加了一些字符串元素。通过使用`get()`方法并结合`for`循环,我们可以遍历整个列表并打印出每个元素。 #### 2.2 遍历List 除了使用`get()`方法之外,...

    java计算同一个list中是否有相同的值

    在给定的代码片段中,作者提供了一个方法来检测一个 `List` 中是否存在重复项,并统计最大重复次数。这种方法虽然实现了目标,但其效率较低,尤其是在处理大数据集时。接下来我们将详细分析该方法的工作原理,并探讨...

    快速解决List集合add元素,添加多个对象出现重复的问题

    当我们使用 List 集合 add 元素时,添加多个对象出现重复的问题是一个常见的问题。今天,我们将讨论如何快速解决 List 集合 add 元素添加多个对象出现重复的问题。 List 集合 add 元素时添加多个对象出现重复的问题...

    浅谈java中对集合对象list的几种循环访问

    在增强for循环中,`for (type item : collection)`,`item`是循环变量,`collection`是要迭代的集合,这里是一个List。编译器会自动处理迭代细节,使得代码更易读。 3. Iterator的使用 Iterator接口是Java集合框架...

    c#list添加数据

    这段代码创建了一个新的`QKDJXT.Model.qkmxEnglish`对象,并设置了它的属性,然后使用`Add()`方法将其添加到`qkmxList`中。这展示了在`List&lt;T&gt;`中添加元素的基本方式。 总结一下,C#中向`List&lt;T&gt;`添加数据的主要...

    List转换为List

    然后,使用循环遍历集合中的每一个Bean对象。 2. **创建Map对象**:针对List中的每一个Bean对象,创建一个Map实例。通常情况下,Map会使用HashMap实现。 3. **复制属性到Map**:从Bean对象中获取属性值,将这些值...

    C#查找列表中所有重复出现元素的方法

    方法内部创建了一个新的`List&lt;T&gt;`对象`duplicates`来存储找到的重复元素。然后,通过一个for循环遍历列表,使用索引`i`访问当前元素。如果当前元素`this[i]`等于`inputValue`,就将其添加到`duplicates`列表中。最后...

    java8 stream 由一个list转化成另一个list案例

    今天,我们学习了如何使用 Java8 Stream 将一个 List 转化成另一个 List,同时还学习了一些其他的应用,例如使用 Stream().forEach() 循环处理 List、使用 Stream().map() 处理 List,并给另外一个 List 赋值、使用 ...

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    `List&lt;T&gt;`提供了`GetRange`方法,可以根据索引范围创建一个新的子列表: ```csharp List&lt;int&gt; subList = numbers.GetRange(1, 3); // 从索引1开始,取3个元素 ``` **12. 合并List&lt;T&gt;:** 通过`AddRange`方法可以将...

    浅谈List.h,list.h函数解析

    list_for_each宏是一个foreach循环,用于遍历链表中的每个节点。 6. 链表的splice 链表的splice操作可以通过list_splice函数来实现。list_splice函数将两个链表连接起来,形成一个新的链表。 7. 链表的遍历和搜索...

    c标签遍历集合嵌套的List集合

    在这段代码中,我们首先创建了一个`List&lt;ProductProperty&gt;`,其中`ProductProperty`对象包含了两个属性:`key`和`valueList`(一个`List&lt;String&gt;`)。接着,我们通过查询数据库获取了一组`...

    增强for循环

    增强型for循环,也被称为foreach循环,是Java编程语言中的一个强大特性,自Java 5引入以来,极大地简化了对集合、数组等可迭代对象的遍历操作。它提供了一种更加简洁、易读的方式来迭代容器中的元素,而无需显式地...

    delphi Tlist详解

    1. **初始化列表**:通过 `TList.Create` 创建一个新的 `TList` 对象。 2. **定义记录类型**:定义了一个名为 `AList` 的记录类型,包含两个字段:整数 `I` 和字符 `C`。 3. **添加记录**:通过 `New(ARecord)` 分配...

    【ASP.NET编程知识】C#将DataTable转化为ListT.docx

    C#将DataTable转化为List 这篇文章主要讲述了如何将DataTable对象转换为List...这篇文章提供了一个将DataTable对象转换为List对象的方法,使用反射机制来获取T对象的所有属性,并将DataTable中的值赋给T对象的属性。

    缓存一个list的内容进txt文件,Android

    本话题主要探讨如何将一个list的内容缓存到TXT文件中,并实现读取操作。 首先,我们需要创建一个list,填充必要的数据。这个数据可以是任何类型,如字符串、整数或其他自定义对象。假设我们有一个String类型的list...

    Delphi中的TList演示实例

    - **定义**:TList是System.Classes单元中的一个类,用于存储指针或者对象的列表。它继承自TObject,并且实现了IList接口。 - **动态增长**:TList会根据需要自动扩展其容量,当添加的元素数量超过当前容量时,它...

    Java 实例 - List 循环移动元素源代码+详细指导教程.zip

    本教程将深入讲解如何在Java中对List进行循环移动元素的操作,通过源代码实例和详细指导来帮助你掌握这一技能。 首先,我们需要理解Java中的List接口,它继承自Collection接口,常见的实现类有ArrayList和...

Global site tag (gtag.js) - Google Analytics