我正在尝试用java实现二叉搜索树。它可以将任何对象作为树中节点的数据,只要该对象实现了 Comparable 接口(interface)。这是必要的,因为在树中放置新节点时,我们需要决定新节点与其父节点相比是否具有较小或较大值(value)。我的 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>
?
最佳答案
这是泛型的语法,T extends Comparable<T>
意味着它将接受 Comparable<T>
的任何内容.
您使用工具是正确的Comparable<T>
在实现接口(interface)时。
关于java - 在 java 中扩展与实现 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54108169/