我試圖用我的類Cell作爲關鍵使用一個HashMap。但是,將項目放入HashMap之後,包含該項目的調用將返回false。HashMap不返回基於密鑰的值
public static void main(String args[]) {
HashMap<Cell, String> map = new HashMap<Cell, String>();
map.put(new Cell(0,0), "Bob");
System.out.println(map.containsKey(new Cell(0,0)));
System.out.println(new Cell(0,0).equals(new Cell(0,0)));
}
此打印出虛實,它應打印真實,真實的,因爲根據地圖文檔中的containsKey使用.equals()。我究竟做錯了什麼?
您還需要正確實現'hashCode()'。 –
或者根本不實現equals,hashCode。如果你重寫equals,你也應該實現hashCode – Anton
如果你不重寫'hashCode()',那麼它只會使用默認的Object方法,這就是爲什麼它們每個對象都不同,儘管它們具有相同的值。 –