我需要在二叉搜索树上编写一个有序集,问题是,我不知道如何使用抽象类型并比较上下文中的那两个对象,因为我需要声明我自己的比较器
我到目前为止但是不知何故我被卡住了,因为我认为可比较的类型是不可能的,因为我自己的比较器方法。
静态节点类:
static class BinaryNode<ElementType> {
ElementType element;
BinaryNode <ElementType> right;
BinaryNode <ElementType> left;
public BinaryNode(ElementType elm) {
ElementType element = elm;
right=left=null;
}
}
我感到困惑的方法示例:
private BinaryNode find( ElementType x, BinaryNode t ) {
while( t != null ) {
if( x.compareTo( t.element ) < 0 )
t = t.left;
else if( x.compareTo( t.element ) > 0 ) // is done with overrite of the comparable method, any Ideas please?
t = t.right;
else
return t; // Match
}
return null; // Not found
}
答案 0 :(得分:0)
您需要使用通配符
class BinaryTree <ElementType extends Comparable<ElementType>> {
private class BinaryNode <ElementType extends Comparable<ElementType>> {
BinaryNode<ElementType> left,right;
ElementType value;
public BinaryNode(ElementType value, BinaryNode<ElementType> left , BinaryNode<ElementType> right) {
this.value = value;
this.left = left;
this.right = right;
}
}
}
我也相信你实际上可以在内部类BinaryNode中完全省略泛型类型的参数。