2012-10-08 3 views
8

hashmap에 넣을 Color 클래스가 있습니다. 나는 개체가 이미 c1 이후 해시 맵사용자 정의 클래스가있는 해시 맵에서 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 

에 존재 name 빨간색이 있는지 여부를 확인하기 위해 해시 맵에 containsKey를 호출하고 싶습니다. 은 이미지도에 표시된 키가 name입니다.

키가 이미 구현 되었기 때문에 true를 반환하고 싶습니다.

답변

13

맞춤 클래스 Color은 원하는 것을 얻기 위해 equals()hashcode() 메서드를 덮어 써야합니다.

당신이 collections에 대한 키와 같은 사용자 정의 개체를 사용하고 개체를 사용하여 조회를하고 싶으면, 당신은 제대로 equals()hashcode() 메소드를 오버라이드 (override)합니다.

또한 읽기 :

Overriding equals and hashCode in Java

관련 문제