比较泛型类型E节点对象

时间:2014-10-18 15:25:39

标签: java generics binary-search-tree comparable

我有一个班级

private class BSTNode<E extends Comparable<E>> implements Comparable<E> {
    BSTNode<E> left, right;
    E data;

使用构造函数和compairTo方法

但是当我想要实例化BSTNode类时,我遇到了问题。

public class BST {
private BSTNode<E> root;

/* Constructor */
public BST() {
    root = new BSTNode<E>();
}

我应该如何在BST课程中使用BSTNode?感谢

2 个答案:

答案 0 :(得分:1)

这些方面的东西(不是完整的承诺或具体):

public class BST<E extends Comparable<E>> 
{
  private class BSTNode<E extends Comparable<E>> implements Comparable<E> {
  BSTNode<E> left, right;
  E data;
  @Override
  public int compareTo(E o) {
    return 0;//implement method here
  }
 }
 private BSTNode<E> root;
 public BST() {
   root = new BSTNode<E>();//while comparing you would need to case E to comparable and call compareTo method
 }

 public static void main(String[] args) 
 {
    BST<String> messages = new BST<String>();
 }
}

答案 1 :(得分:0)

您的类标头意味着您的BTSNode只能使用实现Comparable接口的类E进行实例化。

因此,你应该可以按如下方式使用它:

public class BST {
    private BSTNode<Integer> root;

    /* Constructor */
    public BST() {
        root = new BSTNode<Integer>();
    }
}

Integer可以替换为列出here列出的任何其他实现类或您自己的自定义实现。