`

循环往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);
        }
分享到:
评论

相关推荐

    easypoi 模板导出图片不显示,循环指令中合并单元格格式错乱问题解决

    本文解决三个问题 (1)模板导出图片不显示(实际上导出来了只是最小化显示了) (2)fe循环指令存在而合并单元格的时候格式错乱问题 (3)fe存在一对多关系的时候格式错乱问题 不想下载的可以参考博文 ,代码是...

    求2个集合的交集

    ①建立一个哈希表(HashTable),其键(KEY)表示集合中数字的值,其值(VALUE)表示集合中数字出现的次数 ②遍历集合A,将集合中的每个数字(KEY)插入哈希表,每个数字的出现次数(VALUE)设置为1 ③遍历集合B,对于集合...

    C++面向对象程序设计课程设计学生管理系统

    首先定义一个人类person,有姓名,性别,年龄等属性,并对其初始化,人类作为基类派生出学生类,新增属性电话号码和住址,利用student()构造函数,初始化派生类中的各个变量并记录,使用newlist()函数用于录入...

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

    circular-list-state-machine:使用循环列表做一个状态机

    循环列表状态机使用循环列表做一个状态机例如 var state1 = { start : function ( ) { console . log ( 'this is state1' ) }}var state2 = { start : function ( ) { console . log ( 'this is state2' ) }}var ...

    C语言的单链表

    使用内核链表的时候,将内核链表作为一个成员放入到一个结构体中使用 我们在链表中找到内核链表结构的地址,通过这个地址就可以找到外部大结构体的地址,通过大结构体就可以访问其中的成员 优势: 内核链表突破...

    黑马入学试题及答案

    3.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 4.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并...

    java 面试题 总结

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    C语言的双链表

    使用内核链表的时候,将内核链表作为一个成员放入到一个结构体中使用 我们在链表中找到内核链表结构的地址,通过这个地址就可以找到外部大结构体的地址,通过大结构体就可以访问其中的成员 优势: 内核链表突破...

    react-native-circle-list:React Native 循环列表的 javascript 实现

    在 Javascript 中实现的 React Native 组件,用于创建具有无限滚动的循环元素列表。 数据被映射到固定数量的元素上,因此无论您的列表有多长,它都会以给定的圆形大小呈现。 安装 $ yarn add react-native-circle-...

    超市会员管理系统.rar

    所有会员(卡)--集合:List ArrayList&lt;Member&gt; 程序整体流程搭建的方法 循环 分支 验证会员是否存在的方法 集合的遍历,集合元素的查找 系统随机生成会员卡号的方法 Random类 开卡 输入会员信息...

    python 用lambda函数替换for循环的方法

    现在有一个dataframe,其中一列为score,值从0-100, df: score 98 88 37 68 86 33 现在需要增加一列level,给这些分数分类,90分以上为A,60-90为B,60以下为C。 常用的方法肯定是使用for循环,对每一行进行处理。...

    二十三种设计模式【PDF版】

    在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中, 直接使用 Iterator 进行对象遍历。 设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. ...

    【Java面试题】List如何一边遍历,一边删除?

    可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void main(String[] args) { List platformList = new ArrayList(); platformList.add("博客园"); platformList.add("CSDN")...

    strings.com 纯DOS环境下的文本处理工具

    REM SYSTEM 的行的内容,每找到一个符合条件的行,就把变量M在原有基础上+1。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 SET M=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% REM ...

    Android代码-安卓图片缓存和bannerview结合

    Imagecache-bannerview 安卓图片缓存和bannerview结合 ...author: chenpengfei 一、引导页使用 //如不使用图片替换可不用 ... //是否循环滚动 ... list.add(getLayoutInflater().inflate(R.layout.

    idea插件实现自动set属性拷贝

    List&lt;Student&gt; students=new ArrayList(); (Student2)students//在这个表达式(记得光标在表达式里面哦)按下alt+Enter,选中“哟嚯。。。好爽啊”就能自动生成下面代码 for(Student student:students){ Student...

    nset.com 纯DOS环境 下的文本处理工具

    REM SYSTEM 的行的内容,每找到一个符合条件的行,就把变量M在原有基础上+1。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 SET M=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% REM ...

    千方百计笔试题大全

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

    序列化Hashtable

    这样偷一下,上面的这个MyCollection类就是可以被序列化的了,然后把SortedList其他属性包一下,就基本可以当成一个SortedList使用了,说它是Hashtable也差不多吧――外表基本看不出来。不过局限性还是有喽。它的...

Global site tag (gtag.js) - Google Analytics