首先我们在new 一个对象的时候,对象的id是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单的set 对象的属性,set新的属性值,而add进list中的对象还是同一个对象id,也就是同一个对象;

所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中的对象是重复的对象。

想要避免这个问题只要每次add时保证对象引用都是不同的即可,即每循环一次重新new一个对象。

另外如果List集合在循环内new对象,只会添加最后一个元素。

new的对象应该放在for循环内,每循环一次重新new一个新对象

补充知识:两个list高效取出其中新增和相同的数

两个list循环,尽量避免双层循环以及contains的使用

public static void test(){

List oldList = new ArrayList(){{add(1);add(2);add(4);add(5);}};

List newList = new ArrayList(){{add(3);add(4);add(5);add(6);}};

Map map = new HashMap<>();

for (Integer i: oldList ) {

map.put(i,0);

}

System.out.print(map);

for (Integer j: newList ) {

//value为1 ,更新的数据

if (map.containsKey(j)){

map.put(j,1);

}else {

//value为2 ,新增的数据

map.put(j,2);

}

}

System.out.println(map);

for (Map.Entry entry: map.entrySet() ) {

if(entry.getValue().equals(0)){

System.out.println("旧的值:"+entry.getKey());

}

if(entry.getValue().equals(1)){

System.out.println("更新的值:"+entry.getKey());

}

if(entry.getValue().equals(3)){

System.out.println("新增的值:"+entry.getKey());

}

}

System.out.println(map);

}

public static void main(String[] arg){

test();

}

以上这篇快速解决List集合add元素,添加多个对象出现重复的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...相关推荐

  1. java同名变量在list中添加两次_去除集合中自定义对象的重复值(对象的成员变量值都相同)...

    package cn.itcast_04; import java.util.ArrayList; import java.util.Iterator; /* * 需求:去除集合中自定义对象的重复值( ...

  2. java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

    为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...

  3. MySQL开发技巧 第二禅(子查询中匹配两个值、解决同属性多值过滤的问题、计算累进税的问题)

    一.如何在子查询中匹配两个值 mysql子查询的使用场景及其好处 1.什么是子查询?             当一个查询是另一个查询的条件时,称之为子查询(可以在curd中) 2.常见的子查询使用场景 ...

  4. java静态变量特点_Java中static的特点

    前两天面试时被问到静态的特点,当时回答地不是很好,现在来总结一下 在了解某样东西的时候我们通常会从它是什么,为什么,和怎么样在三方面来衡量,对于java中的static,我们也这样讨论下,要明确以下几 ...

  5. macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...

    Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...

  6. java val变量声明_Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 时间:Nov 28, 2016 原文链接:http://ant ...

  7. java val变量声明_Kotlin 中 var 与 val 定义变量的区别,及使用场景

    看 Kotlin 项目示例代码中,经常出现 var / val 定义变量的情况.于是查了一下两者的区别: var 定义的变量可以被再次赋值.var 是 variable 的缩写. val 定义的变量不 ...

  8. java环境变量设置 win2003_Windows中java环境变量的设置

    AVA中常用需要设置的三个环境变量: JAVA_HOME .CLASSPATH.PATH (一)配置环境变量∶(相对路径) 1.JAVA_HOME=x:\jdk1.6.0 JAVA_HOME 2.用% ...

  9. java 静态变量命名_java中变量的命名规范是什么?

    java中变量的命名规范是什么? 发布时间:2020-05-21 23:12:19 来源:亿速云 阅读:206 作者:鸽子 Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分 ...

最新文章

  1. Exchange 2007 内存使用问题
  2. 5分钟了解TypeScript
  3. 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
  4. 就业形势如此的严峻,你为何不努力?
  5. fputc会覆盖吗_蔬菜覆盖地膜有什么好处?选择什么膜好?
  6. linux 特殊shell变量
  7. Java JDK 自带排序(Arrays.sort(数组名))与自行编写的降序
  8. 2019.7.17刷题统计
  9. python有多少种语法_这20个常规Python语法你都搞明白了吗?
  10. 用Python编写日麻牌理查询器
  11. c# 使用NPOI按模板导出excel
  12. 【详细】嵌入式软件学习问题汇总(二)何为ARM(那些你得知道的事)?
  13. 同步助手java_八大手机平台全覆盖 QQ同步助手Java版发布
  14. django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
  15. (2017中国数字化贡献人物专访)线上蓝光、数字蓝光:助力蓝光弯道超车
  16. 截图或者模糊图片高清处理方式
  17. spring cloud服务之间的调用Fegin
  18. cve查询网址(漏洞查询地址)
  19. 什么才算是关键指标?如何选择关键指标? by彭文华
  20. Python入门基础(六) 字典

热门文章

  1. 程序员赚钱致富的6种方法
  2. 程序型语言VS.编译型语言
  3. JS 中去除空格和换行的正则表达式写法
  4. 破解 IntelliJ IDEA 、免费注册方法、注册码
  5. 解决:A component required a bean of type ‘javax.jms.Queue‘ that could not be found.
  6. RPC 远程过程调用协议
  7. 在图像中截取小图并保存
  8. Hive笔记之严格模式(strict mode)
  9. JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...
  10. PythonOCC 3D图形库学习—创建立方体模型