使用泛型Compariable在Java中实现二叉树<;T>;数据?
Q:在我下面的二叉树实现中,为什么编译器会在使用泛型Compariable在Java中实现二叉树<;T>;数据?,java,generics,binary-tree,comparable,Java,Generics,Binary Tree,Comparable,Q:在我下面的二叉树实现中,为什么编译器会在 if(data.compareTo(this.data)如果某个东西可比,那么它与T可比,而与可比不可比。这就是第二个代码段工作的原因。查看:compareTo(T)由Comparable接口提供。此方法允许将实现此接口的T类的对象实例与另一个T实例进行比较。在第一个示例中,您将Comparable与Comparable进行比较(而不是与T进行比较) 这应该起作用: public class MyBinaryTreeNodeG<T> {
if(data.compareTo(this.data)如果某个东西可比
,那么它与T
可比,而与可比
不可比。这就是第二个代码段工作的原因。查看:compareTo(T)
由Comparable
接口提供。此方法允许将实现此接口的T
类的对象实例与另一个T
实例进行比较。在第一个示例中,您将Comparable
与Comparable
进行比较(而不是与T
进行比较)
这应该起作用:
public class MyBinaryTreeNodeG<T> {
Comparable<T> data;
// ...
public MyBinaryTreeNodeG<T> addChild(final T data) {
if (this.data.compareTo(data) <= 0) {
} else {
}
// ...
}
}
公共类MyBinaryTreeNodeG{
可比数据;
// ...
公共MyBinaryTreeNodeG addChild(最终T数据){
if(this.data.compareTo)(数据)
public class MyBinaryTreeNodeG<T extends Comparable<T>>{
T data;
MyBinaryTreeNodeG<T> parent;
MyBinaryTreeNodeG<T> left;
MyBinaryTreeNodeG<T> right;
public MyBinaryTreeNodeG(T data){
this.data = data;
}
public MyBinaryTreeNodeG<T> addChild(T data){
if (data.compareTo(this.data) <= 0) {
//left node stuff
} else {
//right node stuff
return null;
}
public class MyBinaryTreeNodeG<T> {
Comparable<T> data;
// ...
public MyBinaryTreeNodeG<T> addChild(final T data) {
if (this.data.compareTo(data) <= 0) {
} else {
}
// ...
}
}