美文网首页
hasCode和equals的区别

hasCode和equals的区别

作者: Android程序员老鸦 | 来源:发表于2018-05-02 11:23 被阅读0次

*****hascode()这个方法返回对象的散列码,返回值是int类型的散列码。

对象的散列码是为了更好的支持基于哈希机制的Java集合类,例如 Hashtable, HashMap, HashSet 等。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

*****equals方法对比的是两个引用所指的对象是否是同一个引。

而我们往往需要用equals来判断 2个对象是否等价,而非验证他们的唯一性。这样我们在实现自己的类时,就要重写equals.

equals比较开放,对于业务需求不同,可以自定义其比较的规则,比如string就对equals进行了重写,规定字符串里的字符相等就返回true

*****

在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。

如果两个对象根据equals方法比较是相等的,那么调用两个对象的hashCode方法必须返回相同的整数结果。

如果两个对象根据equals方法比较是不等的,则hashCode方法不一定得返回不同的整数。

hasCode相等,equals未必相等

*****重写equals方法时最好重写一下hasCode方法,确保一致性

相关文章

网友评论

      本文标题:hasCode和equals的区别

      本文链接:https://www.haomeiwen.com/subject/rrbqrftx.html