Java 我定义了一个equals方法,但Hashtable忽略了它。为什么?

Java 我定义了一个equals方法,但Hashtable忽略了它。为什么?,java,collections,hashtable,Java,Collections,Hashtable,我定义了一个equals方法,但Hashtable忽略了它。为什么?首先,确保使用了正确的集合:您可能希望使用HashMap。其次,确保您正确定义了equals()(equals(Object o)),还确保您实现了一个工作的hashCode()。HashTable通过使用hashCode()和equals()以及重写equals您还应该提供一个方法hashCode() 您是否也定义了hashCode()?可能是您过去对它不友好。由Peter Norvig复制。它同时使用了这两种方法。您可以将h

我定义了一个equals方法,但Hashtable忽略了它。为什么?

首先,确保使用了正确的集合:您可能希望使用HashMap。其次,确保您正确定义了equals()(equals(Object o)),还确保您实现了一个工作的hashCode()。

HashTable
通过使用
hashCode()
equals()

以及重写
equals
您还应该提供一个方法
hashCode()


您是否也定义了
hashCode()
?可能是您过去对它不友好。由Peter Norvig复制。它同时使用了这两种方法。您可以将hashCode()定义为返回一个常量,映射仍然有效;约瑟夫·奥廷格在发帖5秒后意识到这一点,并更改为:D
      @Override
      public boolean equals(Object obj) {
          // ... 
      }

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