HashMap hm = new HashMap();
StringBuilder sb = new StringBuilder("test");
hm.put(sb, "second");
// above code gets hacode for sb and places it corresponding bucket
sb.append("123");// with appending of "123", sb hascode will change
System.out.println("element is is" + hm.get(sb));// print "second"
現在hm.get(SB)應搜索在桶的關鍵按新的哈希碼。所以它不應該得到 桶中的任何對象,並應該爲空。那麼爲什麼它獲得「第二」?在這個例子中,如何在hashamp中使用Mutable鍵?
輸出將地圖即第二 – Kick
您應該指定密鑰類型的值; 'Map hm = new HashMap ()'會按照您期望的方式工作。正如你所說,你在鍵入'Object'而'StringBuilder'不會重載'hashCode'。 –