好的,所以我正在开展一个学校项目,我们实施二进制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>
应该允许它们具有可比性,但它们不是。这个标题是由老师提供的,所以我认为不需要改变。我只是忽略或遗忘了什么?
答案 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);
}