上次去某大公司面试,问到了equals方法和hashCode()方法,现在总结一下
1,equals方法:
1,自反性,x.equals(x);为true,前提是X不为空
2,对称性,如果x.equals(y)为true,则y.equals(x)也为true
3,传递性,如果x.equals(y)为true,且y.equals(z)为true,则x.equals(z)为true
4,一致性,x.equals(y)的第一次调用为true,那么x.equals(y)的第2次,3次。。。n次也为true,前提是在这个比较过程中x与y的值没有被修改
5,x.equals(null)为false
6,当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码
b:hashCode()方法:
1,在java程序的一次运行中,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改
2,如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode
方法都必须生成相同的整数结果。
3,如果根据 equals(java.lang.Object)
方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
4,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数
分享到:
相关推荐
HashCode相同equals不同的2位字符集合算法 另附ASCII码表
equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.
java中hashcode和equals的详解.pdf
本文档详细介绍了set接口为什么会用到hashCode和equals方法以及这两个方法的一些探讨 set不同的实现类用到的这两个方法也不同
这里是一个文档,里边讲解了hashCode与equals方法使用,大家要是不明白,可以去看看
hashcode、equals、==总结1简单总结.txt,他们之间的区别
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
主要介绍了重写hashCode()和equals()方法详细介绍,涉及重写equals()方法,重写hashCode()方法,重写equals()而不重写hashCode()的风险等相关内容的介绍,具有一定借鉴价值,需要的朋友可以参考下
文章目录1、hashCode与equals两者之间的关系2、== 和equals的区别`3、为什么要重写equals()方法?4、重写equals()方法5、为什么要重写hashCode()方法?6、什么时候需要重写hashCode()方法?7、重写hashCode()方法: ...
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。 hashCode()和equals()定义在Object类中,这...
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。
关于hashCode()和equals()的本质区别和联系.doc
重写equals和hashcode方法,学习和进步
本文还介绍了定义对象的相等性、实施equals()和hashCode()的需求、编写自己的equals()和hashCode()方法。通过统一定义equals()和hashCode(),可以提升类作为基于散列的集合中的关键字的使用性。
更清楚的了解hashcode()和equals()方法。
hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法。下面这篇文章主要给大家介绍了关于java中hashCode、equals的使用方法,需要的朋友可以参考下。
主要介绍了详解hashCode()和equals()的本质区别和联系,本文先对两种方法作了介绍,然后对二者联系进行分析,具有一定参考价值,需要的朋友可以了解下。
NULL 博文链接:https://zpointer.iteye.com/blog/1058337
hashcode()和equals() 博客地址:https://blog.csdn.net/qq_36963950/article/details/107543471
NULL 博文链接:https://songjianyong.iteye.com/blog/1676894