2012-10-08 7 views
8

Ich habe eine Color-Klasse, die ich in der Hashmaps setzen. Ich möchte containsKey auf der hashmap anrufen, um sicherzustellen, ob das Objekt in der hashmap bereits vorhanden istaufrufen containsKey auf einer Hashmap mit benutzerdefinierten Klasse

Color-Klasse

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 

Seit c1 hat name rot. Ich möchte, dass die System.out true zurückgibt, da der bereits in der Karte vorhandene Schlüssel cname rot

Wie kann dies erreicht werden?

Antwort

13

Ihre benutzerdefinierte Klasse Color sollte equals() und hashcode() Methoden überschreiben, um zu erreichen, was Sie wollen.

Wenn Sie benutzerdefinierte Objekte als Schlüssel für collections verwenden und mögen Lookup tun Objekt mit, dann sollten Sie richtig equals() und hashcode() Methoden außer Kraft setzen.

Lesen Sie auch:

Overriding equals and hashCode in Java

Verwandte Themen