【问题标题】:For HashMap, would implementing hashCode() for the value help if I only search by key?对于 HashMap,如果我只按键搜索,是否会为值实现 hashCode() 帮助?
【发布时间】:2011-05-02 14:57:39
【问题描述】:

我使用的是 Java 6。为简单起见,所有内容都是公开的。

假设我有这个简单的课程。

public class A{
    public String name;
    public String data;
}

我想将我的 A 类对象放入 HashMap。我将使用字段name 作为键,将整个对象作为值。

我只会在这张地图中搜索name的对象。

我的问题是,对于 A 类,我是否需要实现 hashCode 和 equals 用于查找目的?这会加快搜索速度吗?我知道这对 Sets 有帮助,但我不确定 HashMaps 的键只是一个字符串。

【问题讨论】:

    标签: java hashmap equals hashcode


    【解决方案1】:

    如果您只是使用 String 作为键,我认为您无需担心实现这 2 种方法。但是,如果您打算使用 A 类作为键,则需要同时覆盖它们

    【讨论】:

      【解决方案2】:

      您只需要支持hashCode 和equals 用于HashMap 中的键。由于键是字符串,而不是A,因此无需实现它们 - 它们不会被使用。

      【讨论】:

        【解决方案3】:

        不,您只需要为 key 类型实现 hashCode 和 equals。如果您只是将其存储为一个值,那么实现这些方法将没有任何区别(对性能或正确性而言)。

        【讨论】:

          猜你喜欢
          • 2020-10-29
          • 1970-01-01
          • 2017-03-30
          • 2021-12-31
          • 2011-09-30
          • 2012-08-07
          • 2014-07-01
          • 1970-01-01
          • 2013-07-13
          相关资源
          最近更新 更多