解决idea默认带的equals和hashcode引起的bug
作者:thisisnew 时间:2023-12-22 19:02:43
idea默认带的equals和hashcode引起的bug
最近因规范需要,统一使用idea,使用的版本为2017.4.
建立一个实体类,在添加的时候,使用idea的快捷键自动生成了equals和hashcode方法.
选择2个属性进行生成
然后往list中添加,结果一直出现重复记录,调试半天发现
if(!super.equals(o)) return false;这一句是进行引用比较,如果同一个类,直接返回,导致出现问题。
按理说我选择属性进行比对,肯定是不可能是相同引用了,所以2017.3.4分版本的自动生成equals和hashcode请慎
正确的应该如下
关于equals和hashcode问题
默认情况下也就是从超类Object继承而来的equals方法与‘=='是完全等价的,比较的都是对象的内存地址,但我们可以重写equals方法,使其按照我们的需求的方式进行比较,如String类重写了equals方法,使其比较的是字符的序列,而不再是内存地址。
hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。
这样如果我们对一个对象重写了euqals,意思是只要对象的成员变量值都相等那么euqals就等于true,但不重hashcode,那么我们再new一个新的对象,当原对象.equals(新对象)等于true时,两者的hashcode却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set类),将会存储了两个值一样的对象。
来源:https://blog.csdn.net/weu135/article/details/90234397
标签:idea,equals,hashcode
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java虚拟机之类加载
2022-11-15 05:19:19
![](https://img.aspxhome.com/file/2023/4/64754_0s.png)
java数组元素的引用实例讲解
2023-12-02 16:40:32
Android仿IOS自定义AlertDialog提示框
2022-08-23 21:08:44
![](https://img.aspxhome.com/file/2023/6/138406_0s.png)
Android实现关机后数据不会丢失问题
2021-06-08 18:54:47
![](https://img.aspxhome.com/file/2023/1/104661_0s.jpg)
java生成指定范围随机数的多种代码
2023-04-28 07:51:15
![](https://img.aspxhome.com/file/2023/3/60383_0s.png)
自定义类加载器以及打破双亲委派模型解析
2023-06-22 22:03:59
![](https://img.aspxhome.com/file/2023/0/57400_0s.png)
Spring整合SpringMVC与Mybatis(SSM)实现完整登录功能流程详解
2022-07-15 10:19:25
![](https://img.aspxhome.com/file/2023/2/80842_0s.gif)
Java设计模式之迭代模式(Iterator模式)介绍
2022-07-24 16:03:29
C#中事件只能在内部调用的原因分析
2023-08-09 05:07:00
Java中的双重检查(Double-Check)详解
2023-02-23 21:05:23
C语言字符串大小比较
2022-06-02 14:15:17
Hibernate持久化对象生命周期原理解析
2022-08-14 19:44:27
![](https://img.aspxhome.com/file/2023/2/77482_0s.png)
Java单例模式的几种常见写法
2023-10-23 18:27:45
Component和Configuration注解区别实例详解
2022-04-17 01:12:24
Spring Data JPA调用存储过程实例代码
2023-11-25 00:13:15
C#表达式树Expression动态创建表达式
2023-03-26 06:44:39
Android开发之删除项目缓存的方法
2021-07-22 17:15:45
Android 和 windows C/C++/QT通讯时字节存储
2022-07-16 06:09:02
Android仿微信雷达扫描效果的实现方法
2022-07-28 01:49:17
![](https://img.aspxhome.com/file/2023/9/95989_0s.gif)
C#实现单例模式的6种方法小结
2023-09-13 21:02:57