Java如何为泛型V重写compareto



我真的很挣扎。我不明白为什么我不能将值与Node进行比较。value…

行:

if (value < currentNode.value) {

问题:运算符"<"无法应用于"V"、"java.lang.Comparable">

public class BinaryTree<V extends Comparable<V>> {
Node<V> root;
public void addNode(V value) {
Node newNode = new Node(value);
if (root == null) {
root = newNode;
} else {
Node<V> currentNode = root;
Node<V> parent;
while (true) {
parent = currentNode;
if (value.compareTo(currentNode.value) == -1) {
currentNode = currentNode.left;
if (currentNode == null) {
parent.left = newNode;
return;
}
} else {
currentNode = currentNode.right;
if (currentNode == null) {
parent.right = newNode;
return;
}
}
}
}
}
public int compareTo(V v){
if(this.V > v) return 1;
if(this.V < v) return -1;
else                   return 0;
}
}

您的节点还应该有一个扩展可比较Node<V extends Comparable<V>>的泛型类型,并且应该使用该泛型Node<V> root进行初始化-这适用于所有节点变量。

最新更新