Java重写equals()和hashCode()
1.何时需要重写equals()
import java.util.Arrays;/*** 类描述:set集合针对String 类型和8大基础数据类型过滤掉重复数据,* * 如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals 比较相等时,则会去比较hashCode值* * hashCode的值 如果一致的话,则不会存进set*/ public class Unit {private short ashort;private char achar;private byte abyte;private boolean abool;private long along;private float afloat;private double adouble;private Unit aObject;private int[] ints;private Unit[] units;public boolean equals(Object o) {if (o == null || !(o instanceof Unit))return false;Unit unit = (Unit) o;return unit.ashort == ashort&& unit.achar == achar&& unit.abyte == abyte&& unit.abool == abool&& unit.along == along&& Float.floatToIntBits(unit.afloat) == Float.floatToIntBits(afloat)&& Double.doubleToLongBits(unit.adouble) == Double.doubleToLongBits(adouble)&& unit.aObject.equals(aObject)&& Arrays.equals(ints, unit.ints)&& Arrays.equals(units, unit.units);}public int hashCode() {final int prime = 37;int result = 17;result = prime * result + (int) ashort;result = prime * result + (int) achar;result = prime * result + (int) abyte;result = prime * result + (abool ? 0 : 1);result = prime * result + (int) (along ^ (along >>> 32));result = prime * result + Float.floatToIntBits(afloat);long tolong = Double.doubleToLongBits(adouble);result = prime * result + (int) (tolong ^ (tolong >>> 32));result = prime * result + aObject.hashCode();result = prime * result + intsHashCode(ints);result = prime * result + unitsHashCode(units);return result;}private int intsHashCode(int[] aints) {int result = 17;for (int i = 0; i < aints.length; i++)result = 37 * result + aints[i];return result;}private int unitsHashCode(Unit[] aUnits) {int result = 17;for (int i = 0; i < aUnits.length; i++)result = 37 * result + aUnits[i].hashCode();return result;} }
转载于:https://www.cnblogs.com/kofxxf/p/4218501.html
Java重写equals()和hashCode()相关推荐
- Java:重写equals()和hashCode()
http://blog.csdn.net/ansel13/article/details/5437486 很基础的东西就是由于没上心,三番五次地出错,这次好好总结下吧. 众所周之,String .Ma ...
- Java:重写equals()和hashCode() 1
來源: 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473 ...
- hashCode之二--Java:重写equals()和hashCode()
以下内容总结自<Effective Java>. 1.何时需要重写equals() 当一个类有自己特有的"逻辑相等"概念(不同于对象身份的概念). 2.设计equals ...
- Java重写equals和hashCode方法
在日常程序中,我们习惯使用equals方法来比较两个对象,继承自Object的equals方法默认的比较两个对象的内存地址(String类重写了equals方法,比较字符串的内容).假如我们创建了两个 ...
- 在Java里重写equals和hashCode要注意什么问题
问题:在Java里重写equals和hashCode要注意什么问题 重写equals和hashCode有哪些问题或者陷阱需要注意? 回答一 理论(对于语言律师或比较倾向于数学的人): equals() ...
- Java实战equals()与hashCode()
2019独角兽企业重金招聘Python工程师标准>>> 一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equal ...
- 不同时重写equals和hashCode又会怎样?
作者:flyhero 微信公众号:码上实战(ID:Push-Code) 可能一问到equals和hashCode相关的问题,就会有人讲他们的自反性,对称性,一致性,传递性等几条约定了,此时我不得不佩服 ...
- 为什么使用HashMap需要重写hashcode和equals方法_不同时重写equals和hashCode又会怎样?听听过来人的经验...
可能一问到equals和hashCode相关的问题,就会有人讲他们的自反性,对称性,一致性,传递性等几条约定了,此时我不得不佩服,这么多约定竟然都能记得,但我不知道你是不是真的理解呢. 一.我不同时重 ...
- 运用简单的超市购物车系统,理解重写equals、hashcode的意义
更多干货见博主个人网站:https://blog.zhenglin.work 运用简单的超市购物车系统,理解重写equals.hashcode的意义,以及map的学习 商品类: 先编写一个商品类,要有 ...
最新文章
- IBM会话设置和覆盖规则
- 唐筛的准确率这么低为什么还要做_【NT 唐筛 四维】 【唐筛结果通知】...
- 大型电商网站的页面静态化方案是如何支撑亿级流量的?
- Redis(四):Spring + JedisCluster操作Redis(集群)
- jQuery 学习笔记之十二 (选项卡)
- [PYTHON] 深度解析copy.copy() 与 copy.deepcopy()
- Q96:PT(1):方格纹理(Checker)(2)——2D Checker
- React:网络工具库
- 用keil5将程序下载到板子里
- knx智能照明控制系统电路图_智能照明控制系统KNX
- 事业单位计算机技术岗工资,事业技术工资待遇
- Java代码混淆技术选型
- matlab命令窗口汉字显示为乱码 添加绝对路径
- 解决office 2019打开word、excel慢的问题
- MBTI职业性格在软件研发组织中不同岗位的分布研究
- python批量打印pdf_通过Dynamo批量打印PDF图纸
- 启动手机自带浏览器和手机拨号
- 如果让你只推荐一本nbsp;Javaamp;nbs…
- C# 绘制验证码图片
- 用原生JS写一个网页版的2048小游戏(兼容移动端)