Java 对于HashMap,如果我只按键搜索,那么实现hashCode()的值会有帮助吗?

Java 对于HashMap,如果我只按键搜索,那么实现hashCode()的值会有帮助吗?,java,hashmap,equals,hashcode,Java,Hashmap,Equals,Hashcode,我正在使用Java6。为了简单起见,一切都是公开的 假设我有一个简单的类 public class A{ public String name; public String data; } 我想把我的类A对象放到HashMap中。我将使用字段name作为键,使用整个对象作为值 我将仅通过name搜索此地图中的对象 我的问题是,对于类A,我是否需要实现hashCode和equals,以便进行查找?这会加快搜索速度吗?我知道这对集合有帮助,但我不确定HashMaps的键只是字符串。

我正在使用Java6。为了简单起见,一切都是公开的

假设我有一个简单的类

public class A{
    public String name;
    public String data;
}
我想把我的类A对象放到HashMap中。我将使用字段
name
作为键,使用整个对象作为值

我将仅通过
name
搜索此地图中的对象


我的问题是,对于类A,我是否需要实现
hashCode
equals
,以便进行查找?这会加快搜索速度吗?我知道这对集合有帮助,但我不确定HashMaps的键只是字符串。

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

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

如果您使用字符串作为键,我认为您不必担心实现这两个方法。但是,如果您计划使用类A作为密钥,则需要重写这两个类