java基础之hashcode()和equals()之间的关系
java基础之hashcode()和equals()之间的关系
在java中,每个对象都可以调用自己的hashcode()方法得到自己的哈希值(hashcode),相当于对象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在java中做不到这么绝对,但是我们仍然可以利用hashcode来做一些提高的判断,比如:
- 1.如果两个对象的hashcode不相同,那么这两个对象肯定不同的两个对象。
- 2.如果两个对象的hashcode相同,不代表这两个对象一定是同一个对象,也可能是两个对象
- 3.如果两个对象相等,那么他们的hashcode就一定相同。
在java的一些集合类的实现中,在比较两个对象是否相等时,会根据上面的原则,会先调用对象的hashcode()方法得倒hashcode进行比较,如果hashcode不相同,就可以直接认为这两个对象不相同,如果hashcode相同,那么就会进一步调用equals()方法,就是用来最终确定两个对象是不是相等的,通常equals()方法的实现会比较重,逻辑比较多,而hashcode()主要就是得到一个哈希值,实际上就一个数字,相对而言比较轻,所以在比较两个对象时,通常都会根据hashcode相比较一下。
所以我们就需要注意,如果我们重写了equals()方法,那么就要注意hashcode()方法,一定要保证能遵守上述规则。
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/16508205.html

浙公网安备 33010602011771号