我在面试中有以下问题,请告知哪些是正确的选择..
给定同一个类的两个对象a和b,并且如果为该类正确实现了equals()和hashCode(),则下列哪一项必须成立? 多个选项可以是正确的(检查适用的任何内容)
现在请告知哪些选项是正确的。
答案 0 :(得分:0)
见方括号内的答案。
If a.hashCode() == b.hashCode() then a.equals(b) [could be or could not be]
If a.hashCode() == b.hashCode() then !a.equals(b) [could be or could not be]
If a.hashCode() != b.hashCode() then a.equals(b) [FALSE]
If a.hashCode() != b.hashCode() then !a.equals(b) [TRUE]
本文简要解释了所有这些: http://www.ibm.com/developerworks/library/j-jtp05273/
答案 1 :(得分:0)
在存储和查找哈希表中的对象时,会使用hashCode()和equals()方法的组合。
如果Java Collections API中的哈希表能够正常工作,那么有两条规则可以很好地了解如何在自己的类中实现hashCode()方法:
用简短的话来说: