二叉树通用比较对象

BinaryTree Generic CompareTo

好的,我正在做一个学校项目,我们在该项目中实现了一个二进制 TreeMap 并给出了一个基本模板来填写。我会尽量不放弃所有代码,但这是我碰壁的地方。我需要能够比较键以便插入新元素、正确搜索等等。但是我一直收到 Bad Operand 错误。

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;
    }
}

现在这个 class 是 TreeMap class 的子class。同样,我不会转储整个代码,但是 header 是这样的:

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

现在我到处看似乎都指出 K extends Comparable<K> 应该允许它们具有可比性,但事实并非如此。这个header是老师给的,我觉得不用改。我是不是忽略了或忘记了什么?

您无法使用 <> 比较 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;
}

或者,更好的是,只是 return 调用 compareTo() 的结果:

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