BinaryTree Generic CompareTo

时间:2016-10-27 03:47:55

标签: java generics treemap operands

好的,所以我正在开展一个学校项目,我们实施二进制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;
    }
}

现在这个类是TreeMap类的子类。我再也不会转储整个代码,但标题是这样的:

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

现在我看到的每个地方似乎都指出K extends Comparable<K>应该允许它们具有可比性,但它们不是。这个标题是由老师提供的,所以我认为不需要改变。我只是忽略或遗忘了什么?

1 个答案:

答案 0 :(得分: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);
}