二叉树通用比较对象
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);
}
好的,我正在做一个学校项目,我们在该项目中实现了一个二进制 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);
}