2012-10-08 55 views
8

我有一個Color類,我將其放入散列表中。我想打電話containsKey的HashMap來確保該對象是否已經存在於HashMap中使用自定義類在散列表上調用containsKey

Color類

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紅色

這怎麼能實現?

回答

13

你的自定義類Color應該覆蓋equals()hashcode()方法來實現你想要的。

當您使用自定義對象爲collections鍵和想要做的使用對象查找,則應適當覆蓋equals()hashcode()方法。

還可以閱讀:

Overriding equals and hashCode in Java