对于HashMap,如果我只按键搜索,会为值帮助实现hashCode()吗?

Rus*_*ell 3 java equals hashmap hashcode

我正在使用Java 6.为简单起见,一切都将是公开的.

假设我有这个简单的类.

public class A{
    public String name;
    public String data;
}
Run Code Online (Sandbox Code Playgroud)

我想把我的A类对象放到HashMap中.我将使用该字段name作为键,并将整个对象用作值.

我只会在这张地图中搜索一个对象name.

我的问题是,对于A类,我是否需要实施hashCodeequals 查找目的?这会加快搜索速度吗?我知道它会对Sets有所帮助,但我不确定HashMaps的关键只是一个String.

Mar*_*ers 5

不,您只需要为密钥类型实现hashCode和equals .如果您只是将其存储为值,那么实现这些方法对性能或正确性没有影响.