2012-10-08 19 views
8

ile bir hashmap üzerindeKey hashmap koyuyorum bir Renk sınıf var. Ben nesne zaten c1 yana HashMapçağrı özel sınıf

Renk sınıfı

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 

mevcuttur name kırmızı olup olmadığını sağlamak için HashMap üzerinde containsKey çağırmak istiyorum. c'da zaten mevcut olan anahtarın kırmızı

'a sahip olması nedeniyle System.out'un geri dönmesini istiyorum. Bu nasıl sağlanabilir?

cevap

13

Özel sınıfınız Color, ne istediğinizi başarmak için equals() ve hashcode() yöntemlerini geçersiz kılmalıdır.

Eğer collections için tuşları olarak özel nesneleri kullanıyor ve nesne kullanılarak arama yapmak isterdiniz, o zaman düzgün equals() ve hashcode() yöntemlerini geçersiz kılar.

Ayrıca okuyun:

Overriding equals and hashCode in Java