Java:特殊类型,二进制运算符的操作数类型错误



我正在用java开发树。我目前正在研究检索和插入方法。以下是方法:

public void insert(E item) {

if(item <= node.item){
if(node.left == null){
node.left = new TreeNode<E>(item);
}
else{
insert(node.left.item);
}
}
else{
if(node.right == null){
node.right = new TreeNode<E>(item);
}
else{
insert(node.right.item);
}
}
root.item = item;
}
public E retrieve(E item) {
if(item == node.item){
return item;
}
else if(item <= node.item){
if(node.left == null){
return null;
}
else{
return retrieve(node.left.item);
}
} else{
if(node.right == null){
return null;
}
else {
return retrieve(node.right.item);
}
}
}

在上面的代码中,if语句:

if(item <= node.item)

正在给我以下错误:

java: bad operand types for binary operator '<='
first type:  E
second type: E

我有点困惑,因为当我用compareTo((切换操作数时,它让我知道结果是布尔值,但我们期望的是int。我不太确定如何比较它们;或者更确切地说,与它们进行比较。SOS!

谢谢,T

如果你的老师心脏病发作,让我们先修复他的泛型类型。这个

public class BinarySearchTree<E extends Comparable<E>> extends BinaryTree<E>

应该是

public class BinarySearchTree<E extends Comparable<? super E>> extends BinaryTree<E>

您可以使用Comparable<T>进行比较。也就是说,

if(item <= node.item){

应该是

if (item.compareTo(node.item) <= 0)

依此类推,使用item.compareTo而不是<==>

最新更新