在具有自定义类的hashmap上调用containsKey

时间:2012-10-08 02:47:37

标签: java hashmap

我有一个我正在放入hashmap的Color类。我想在hashmap上调用containsKey以确保该对象是否已存在于hashmap中

颜色等级

public class Color {
  public String name;
  Color (String name) {this.name = name;}
  //getters setters for name 
}

HashMap中

HashMap<Color, List<String>> m = new HashMap<Color, List<String>>();
Color c = new Color("red");
m.put(c, new ArrayList<String>());
Color c1 = new Color("red");
System.out.println(m.containsKey(c1)); //I'd like to return this as true

由于c1name个红色。我希望System.out返回true,因为地图中已存在的密钥cname红色

如何实现这一目标?

1 个答案:

答案 0 :(得分:15)

您的自定义班级Color应覆盖equals()hashcode()方法,以达到您想要的效果。

当您使用自定义对象作为collections的键并希望使用对象进行查找时,您应该正确覆盖equals()hashcode()方法

同时阅读:

Overriding equals and hashCode in Java