Java 对于HashMap,如果我只按键搜索,那么实现hashCode()的值会有帮助吗?
我正在使用Java6。为了简单起见,一切都是公开的 假设我有一个简单的类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的键只是字符串。
public class A{
public String name;
public String data;
}
我想把我的类A对象放到HashMap中。我将使用字段name
作为键,使用整个对象作为值
我将仅通过name
搜索此地图中的对象
我的问题是,对于类A,我是否需要实现
hashCode
和equals
,以便进行查找?这会加快搜索速度吗?我知道这对集合有帮助,但我不确定HashMaps的键只是字符串。不,您只需要为键类型实现hashCode和equals。如果您只是将其存储为一个值,那么实现这些方法将不会有任何区别(对性能或正确性)。您只需要为HashMap中的键支持hashCode
和equals
。由于键是一个字符串,而不是a
,因此不需要实现它们-它们不会被使用。如果您使用字符串作为键,我认为您不必担心实现这两个方法。但是,如果您计划使用类A作为密钥,则需要重写这两个类