如果需要把一个对象放入HashSet中时,如果重写该对象对应类的equals()方法,应用应该重写其hashcode()方法,其规则是:如果两个对象通过equals方法比较返回true时,这两个对象的hashcode也应该相同。
如果两个对象通过equals方法比较返回true,但这两个对象的hashcode()方法返回不同的hashcode时,这将导致hashset将会把这两个对象保存在hashset的不同位置,从而两个对象都可以添加成功,这与set集合的规则有点出入。
如果两个对象的hashcode()方法返回的hashcode相同,但他们通过equals方法比较返回false时将更麻烦:因为两个对象的hashcode值相同,hshset将试图把他们保存在同一个位置,但实际上又不行(否则将只剩下一个对象),所以处理起来比较复杂;而且hashset访问集合元素时也是根据元素的hashcode的值来访问的,如果hashset中包含两个元素有相同的hashcode值,将会导致性能下降。
当两个对象通过equals方法比较返回true时,这两个对象的hashcode应该相等。
对象中用作equals比较标准的属性,都应该用来计算hashcode值。
分享到:
相关推荐
equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.
重写equals和hashcode方法,学习和进步
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
HashCode相同equals不同的2位字符集合算法 另附ASCII码表
这里是一个文档,里边讲解了hashCode与equals方法使用,大家要是不明白,可以去看看
本文还介绍了定义对象的相等性、实施equals()和hashCode()的需求、编写自己的equals()和hashCode()方法。通过统一定义equals()和hashCode(),可以提升类作为基于散列的集合中的关键字的使用性。
主要介绍了重写hashCode()和equals()方法详细介绍,涉及重写equals()方法,重写hashCode()方法,重写equals()而不重写hashCode()的风险等相关内容的介绍,具有一定借鉴价值,需要的朋友可以参考下
protected void doPost HttpServletRequest request HttpServletResponse response throws ServletException IOException { String action request getParameter "action"... equals ac [更多]
关于hashCode()和equals()的本质区别和联系.doc
equals bt pause getText toString trim { mediaPlayer start ; bt pause setText "暂停" ; return; } if mediaPlayer null&&mediaPlayer isPlaying { mediaPlayer pause ; ...
更清楚的了解hashcode()和equals()方法。
hashcode()和equals() 博客地址:https://blog.csdn.net/qq_36963950/article/details/107543471
NULL 博文链接:https://jackosn-liao.iteye.com/blog/528757
本文档详细介绍了set接口为什么会用到hashCode和equals方法以及这两个方法的一些探讨 set不同的实现类用到的这两个方法也不同
但是为什么JavaDoc明确的告诉我们, hashCode()和equals()要一起重写呢?原因是因为,在Java自带的容器HashMap和HashSet中, 都需同时要用到对象的hashCode()和equals()方法来进行判断,然后再插入删除元素,这点...
hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法。下面这篇文章主要给大家介绍了关于java中hashCode、equals的使用方法,需要的朋友可以参考下。
关于重写equals,hashcode以及compareTo方法!
文章目录1、hashCode与equals两者之间的关系2、== 和equals的区别`3、为什么要重写equals()方法?4、重写equals()方法5、为什么要重写hashCode()方法?6、什么时候需要重写hashCode()方法?7、重写hashCode()方法: ...
举例分析 equals 和 hashcode 方法,hashcode应该怎么样生成 8个基本类型与基本对象的比较:byte与Byte shot与Short int与Integer long与Long float与Float double与Double char与Character
本篇文章详细介绍了Java中的equals和hashCode方法详解,Object 类是所有类的父类,非常具有实用价值,需要的朋友可以参考下。