2011-04-07 55 views
0

我定義了一個equals方法,但是Hashtable忽略它。爲什麼?我定義了一個equals方法,但是Hashtable忽略它。爲什麼?

+0

你也可以定義'的hashCode()'? – asgs 2011-04-07 12:36:45

+1

可能你以前一直對它不友好。 – Lazarus 2011-04-07 12:37:39

+2

從[Java IAQ複製 - 我定義了一個equals方法,但是Hashtable忽略它。爲什麼?](http://norvig.com/java-iaq.html#equals)Peter Norvig。 – Dori 2011-04-09 06:56:22

回答

2

首先,確保您使用的是正確的集合:您可能需要而不是HashMap。其次,確保你已經正確地定義了equals()(equals(Object o)),並且確保你已經實現了一個工作的hashCode()。

0

HashTable作品使用hashCode()equals()

+1

它使用兩者。您可以將hashCode()定義爲返回常量,並且該地圖仍然可以工作;它不會是非常優化的。 – 2011-04-07 12:38:34

+0

@Joseph Ottinger在張貼後發現並改變了這5秒:D – Tnem 2011-04-07 12:39:06

0

除了覆蓋equals你也應該提供一個方法hashCode()

 @Override 
     public boolean equals(Object obj) { 
      // ... 
     } 

     @Override 
     public int hashCode() { 
      // .... 
     } 
+0

hashCode()是正確的。 – 2011-04-07 12:41:07

相關問題