用于假人的通用模板ADT

时间:2012-11-09 21:12:21

标签: java

我需要在二叉搜索树上编写一个有序集,问题是,我不知道如何使用抽象类型并比较上下文中的那两个对象,因为我需要声明我自己的比较器

我到目前为止但是不知何故我被卡住了,因为我认为可比较的类型是不可能的,因为我自己的比较器方法。

静态节点类:

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
    }

1 个答案:

答案 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中完全省略泛型类型的参数。