java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...
首先我们在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元素,添加多个对象出现重复的问题...相关推荐
- java同名变量在list中添加两次_去除集合中自定义对象的重复值(对象的成员变量值都相同)...
package cn.itcast_04; import java.util.ArrayList; import java.util.Iterator; /* * 需求:去除集合中自定义对象的重复值( ...
- java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换
为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...
- MySQL开发技巧 第二禅(子查询中匹配两个值、解决同属性多值过滤的问题、计算累进税的问题)
一.如何在子查询中匹配两个值 mysql子查询的使用场景及其好处 1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询(可以在curd中) 2.常见的子查询使用场景 ...
- java静态变量特点_Java中static的特点
前两天面试时被问到静态的特点,当时回答地不是很好,现在来总结一下 在了解某样东西的时候我们通常会从它是什么,为什么,和怎么样在三方面来衡量,对于java中的static,我们也这样讨论下,要明确以下几 ...
- macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...
Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...
- java val变量声明_Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 时间:Nov 28, 2016 原文链接:http://ant ...
- java val变量声明_Kotlin 中 var 与 val 定义变量的区别,及使用场景
看 Kotlin 项目示例代码中,经常出现 var / val 定义变量的情况.于是查了一下两者的区别: var 定义的变量可以被再次赋值.var 是 variable 的缩写. val 定义的变量不 ...
- java环境变量设置 win2003_Windows中java环境变量的设置
AVA中常用需要设置的三个环境变量: JAVA_HOME .CLASSPATH.PATH (一)配置环境变量∶(相对路径) 1.JAVA_HOME=x:\jdk1.6.0 JAVA_HOME 2.用% ...
- java 静态变量命名_java中变量的命名规范是什么?
java中变量的命名规范是什么? 发布时间:2020-05-21 23:12:19 来源:亿速云 阅读:206 作者:鸽子 Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分 ...
最新文章
- Exchange 2007 内存使用问题
- 5分钟了解TypeScript
- 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
- 就业形势如此的严峻,你为何不努力?
- fputc会覆盖吗_蔬菜覆盖地膜有什么好处?选择什么膜好?
- linux 特殊shell变量
- Java JDK 自带排序(Arrays.sort(数组名))与自行编写的降序
- 2019.7.17刷题统计
- python有多少种语法_这20个常规Python语法你都搞明白了吗?
- 用Python编写日麻牌理查询器
- c# 使用NPOI按模板导出excel
- 【详细】嵌入式软件学习问题汇总(二)何为ARM(那些你得知道的事)?
- 同步助手java_八大手机平台全覆盖 QQ同步助手Java版发布
- django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
- (2017中国数字化贡献人物专访)线上蓝光、数字蓝光:助力蓝光弯道超车
- 截图或者模糊图片高清处理方式
- spring cloud服务之间的调用Fegin
- cve查询网址(漏洞查询地址)
- 什么才算是关键指标?如何选择关键指标? by彭文华
- Python入门基础(六) 字典
热门文章
- 程序员赚钱致富的6种方法
- 程序型语言VS.编译型语言
- JS 中去除空格和换行的正则表达式写法
- 破解 IntelliJ IDEA 、免费注册方法、注册码
- 解决:A component required a bean of type ‘javax.jms.Queue‘ that could not be found.
- RPC 远程过程调用协议
- 在图像中截取小图并保存
- Hive笔记之严格模式(strict mode)
- JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]...
- PythonOCC 3D图形库学习—创建立方体模型