在Java中扩展与实现Comparable

时间:2019-01-09 10:37:32

标签: java binary-search-tree

我正在尝试在Java中实现二进制搜索树。只要该对象实现Comparable接口,它就可以将任何对象用作树中节点的数据。之所以需要这样做,是因为在将新节点放入树中时,我们需要确定新节点与其父节点相比是较小还是较大值。我的Node类如下所示。

package com.java.ds.bst;

public class Node<T extends Comparable<T>> implements Comparable<T> {
  private T data;
  private Node<T> left = null;
  private Node<T> right = null;

  public Node() {
    this.data = null;
  }

  public Node(T data) {
    this.data = data;
  }

  public T getValue() {
    return this.data;
  }

  public Node<T> getLeft() {
    return this.left;
  }

  public Node<T> getRight() {
    return this.right;
  }

  public void setLeft(Node<T> left) {
    this.left = left;
  }

  public void setRight(Node<T> right) {
    this.right = right;
  }

  @Override
  public int compareTo(T other) {
    return this.data.compareTo(other);
  }
}

我不理解的是,为什么在类名声明中需要T extends Comparable<T>而不是T implements Comparable<T>

1 个答案:

答案 0 :(得分:1)

这是泛型的语法,T extends Comparable<T>表示它将接受Comparable<T>之类的任何东西。

在实现接口时,正确使用工具Comparable<T>