【Java 集合 add 方法重复添加问题】首先需要知道的是,在 add 方法里面,对于引用类型的对象,存放的是引用类型的地址,尤其是当我们使用 new 出来的对象并调用集合中的 add 方法来添时,当改变了该对象的属性,但该对象的地址并没有改变,所以当对象里面的属性改变的时,原本存放在集合里面的内容也会跟着一起改变,并在添加的过程中添加重复的内容放集合中去,避免的方法就是每次添加的时候重新 new 来开辟新的内存空间来保存对象信息,若需要添加多个,则应当在循环里面定义。
举例说明
//定义一个老师,赋予值
Teacher teacher = new Teacher("Mike","男");
//存放老师
List teacherList = new ArryList();
teacherList.add(teacher);
这个时候集合里面只有 Mike 老师的信息,接着
//把 teacher 重新赋值添加到集合中
teacher.setName("Marry");
teacher.setSex("女");
teacherList.add(teacher);
这个时候就需要注意了,由于 teacher 对象并没有改变内存中的地址,所以此时集合中存放着的 Mike 的信息就会比变成 Marry 的信息,在调用 add 方法后又会继续添加一个 Marry 老师到集合中去,造成了俩个 Marry 在集合当中。
正确的做法:
//添加时重新 new Teacher 对象
for(int i = 0,i
这样不仅每次添加时避免掉了重复问题,也因为是局部变量在循环结束时会回收内存空间,避免了资源的浪费。
推荐阅读
- 头歌Java|五、 循环结构基础(头歌实践平台)
- 头歌Java|十一、方法的使用
- 头歌Java|一、Java初体验(头歌实践平台)
- Java13新特性及代码示例
- java|LeetCode(561. Array Partition(数组分割))
- Java基础知识|【Java基础知识】IO流--标准输入输出流、打印流PrintStream
- Java|SHA算法简介
- LeetCode|LeetCode 432. 全 O(1) 的数据结构(双向链表+哈希表) / 720. 词典中最长的单词 / 2043. 简易银行系统
- JVM|JVM--基础--20--对象的创建过程