我正在尝试在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>
?
答案 0 :(得分:1)
这是泛型的语法,T extends Comparable<T>
表示它将接受Comparable<T>
之类的任何东西。
在实现接口时,正确使用工具Comparable<T>
。