2016-10-27 8 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); 
} 
代わりに、あなたはこのようなものを使用することができます