12两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?(面试题)
不对,两个对象的hashCode()相同,equals()不一定true。代码示例:Stringstr1="通话";Stringstr2="重地";System.out.println(String.format("str1:%d|str2:%d",str1.hashCode(),str2.hashCode()));System.out.println(str1.equals(str2));执行的结果:str1:1179395|str2:1179395false代码解读:很显然“通话”和“重地”的hashCode()相同,然而equals()则为false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。
来自:java关键字-equals、hashCode()