【问题标题】:I defined an equals method, but Hashtable ignores it. Why? [closed]我定义了一个 equals 方法,但 Hashtable 忽略了它。为什么? [关闭]
【发布时间】:2011-04-07 12:35:40
【问题描述】:

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

【问题讨论】:

标签: java collections hashtable


【解决方案1】:

首先,确保您使用的是正确的集合:您可能想要 HashMap。其次,确保你已经正确定义了equals()(equals(Object o)),并且确保你已经实现了一个有效的hashCode()。

【讨论】:

    【解决方案2】:

    HashTable 使用 hashCode()equals() 工作

    【讨论】:

    • 两者都用。您可以将 hashCode() 定义为返回一个常量,并且映射仍然可以工作;它只是不会非常理想。
    • @Joseph Ottinger 在发布后 5 秒意识到这一点并更改了:D
    【解决方案3】:

    除了覆盖equals,您还应该提供一个方法hashCode()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      相关资源
      最近更新 更多