首先看一段程序
String aStr = "Aa";
String bStr = "BB";
System.out.println(String.format("aStr:%d,bStr:%d", aStr.hashCode(), bStr.hashCode()));
System.out.println(aStr.equals(bStr));
运行结果如下:
C:\android\java\jdk1.8\bin\java.exe
aStr:2112,bStr:2112
false
可以看到,这两个字符串的hashCode()是相同的,但是equals()方法返回为false。这是为什么呢?
这是因为hash表本身是一种散列表,而在散列表中,hashCode()相等即两个键值对的哈希值相等;然而哈希值相等,并不一定能得出键值对相等。
所以根据上述的情况以及设计要求,可以得到结论: