2016-10-27 5 views
0

좋아요, 저는 바이너리 TreeMap을 구현하고 기본 템플릿을 작성하는 학교 프로젝트에서 일하고 있습니다. 나는 모든 코드를 덤프하지 않으려 고 노력할 것입니다. 그러나 여기에 제가 벽을 치는 곳이 있습니다. 나는 열쇠를 비교할 수 있어야하므로 새로운 요소를 삽입하고, 적절히 검색하고, 기타 등등. 하지만 나쁜 피연산자 오류가 계속 발생합니다.BinaryTree Generic CompareTo

private class Element { 
K key; 
V value; 
public Element(K key, V value) { 
    this.key = key; 
    this.value = value; 
} 
public int compareTo(Element that) { 
     if (key < that.key) //Error Here 
      return -1; 
     else if(key > that.key) //And here 
      return 1; 
     else 
      return 0; 
    } 
} 

이제이 클래스는 TreeMap 클래스의 하위 클래스입니다. 다시 나는 전체 코드를 덤프하지 않지만 헤더과 같이이다 :

public class TreeMap<K extends Comparable<K>,V> implements MyMap<K,V> 

을 이제 사방에 내 모습 K extends Comparable<K>을 가진 것은 이러한 비교가 될 수 있도록해야 그 시점 보인다,하지만 그들은 아니에요. 이 헤더는 선생님이 제공 한 것이므로 변경할 필요가 없다고 생각합니다. 방금 뭔가를 간과하거나 잊어 버렸습니까?

답변

1

<>을 사용하여 Comparable 개체를 비교할 수 없습니다. 그것들은 단지 숫자 값입니다. 대신, 당신은 다음과 같이 사용할 수 있습니다

public int compareTo(Element that) { 
    final int comp = key.compareTo(that.key); 
    if (comp < 0) 
     return -1; 
    else if(comp > 0) 
     return 1; 
    else 
     return 0; 
} 

을 또는 더 나은, 단지 compareTo()를 호출 한 결과 반환 :

public int compareTo(Element that) { 
    return key.compareTo(that.key); 
}