2009-12-01 6 views
0

TreeMap 인터페이스를 사용하는 Java 프로그램을 작성 중이며 containsKey에 문제가 있습니다. containsKey를 지정해도 true를 반환합니다. 확실히 알고있는 TreeMap에없는 것이 있습니다.Java TreeMap containsKey는 반드시 true를 리턴합니까?

무엇이 원인 일 수 있습니까?

미리 감사드립니다.

-

편집 : 텍스트 파일에서 단어의 발생 수를 계산하는 프로그램을 쓰고 있어요. 단어는 구문 분석되며 각 단어는 클래스의 새 인스턴스입니다. 이 클래스에서는, equals와 hashCode 메소드가 오버라이드 (override)됩니다. 다른 객체 인 경우에서도, 그 단어를 등가로서 취급 할 필요가 있기 (위해) 때문에입니다.

"text"필드는 단어의 텍스트가 들어있는 문자열입니다.

public boolean equals(Object obj){ 
    Word temp = ((Word)obj); 
    return this.text.equals(temp.text); 
} 

public int hashCode(){ 
    return this.text.hashCode(); 
} 

public int compareTo (Object x) { 
    Word temp = ((Word)x); 

    if(this.text.compareTo(temp.text) < 0){ 
     return -1; 
    } 
    else if (this.text.equals(temp.text)){ 
     return 0; 
    } 
    else { 
     return 1; 
    } 
} 
+0

몇 가지 예제 코드를 게시 할 수 있습니까? –

+0

그리고 compareTo 구현은 무엇입니까? –

+0

흠 ... 글쎄, 괜찮아 보인다. (단지'this.text.compareTo (temp.text) '를 반환하는 것이 더 간단 할지라도) - 실패했다는 것을 증명하는 짧지 만 완전한 프로그램이 있는가? –

답변

3

내 생각 엔 당신이 (너무 아마 hashCode) equals의 잘못된 구현이 핵심 유형을 사용하고 있는지, 또는 비교가 equals에 부합되지 않는 것입니다. 내 머리 꼭대기에서 다른 어떤 이유도 생각할 수 없다.

문제를 시연하는 짧지 만 완전한 프로그램을 제작할 수 있다면이를 확인할 수 있습니다.