好的,所以我正在做一个学校项目,我们在其中实现Binary TreeMap
,并提供了一个基本模板进行填写。我将尝试不转储所有代码,但这是我碰壁的地方。我需要能够比较键,以便插入新元素,正确搜索以及诸如此类。但是我一直收到错误的操作数错误。
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>
应该可以使它们具有可比性,但事实并非如此。此标头是由老师提供的,因此我认为不需要更改它。我只是俯视还是忘记某事? 最佳答案
您不能使用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);
}