我正在尝试创建一个b-tree类,该类实现下面显示的集合接口。这里的问题是add方法接收一个对象,而我的节点类setleftNode接收一个泛型类型为"T"的节点。因此,在编译时,我得到的方法不能应用于给定的类型错误。:
B-树类:
public class BST<T> implements Collection<T>{
private Node<T> _root;
private Node<T> _current;
private Random _rnd = new Random();
public BST(Node<T> root) {
_root = root;
}
public Node<T> getRoot(){
return _root;
}
@Override
public Iterator iterator() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean add(Object e) {
if (this._root != null){
if(this._root.getLeftNode() == null){
this._root.setLeftNode(e);
return true;
}
}
return false;
}
节点类:
public class Node<T>{
private T _value;
private Node<T> _left;
private Node<T> _right;
public Node (T value){
_value = value;
}
public T getValue(){
return _value;
}
public void setLeftNode(Node<T> node){
_left= node;
}
public void setRightNode(Node<T> rNode){
_right = rNode;
}
public Node getRightNode(){
return _right;
}
public Node getLeftNode(){
return _left;
}
}
如果BST<T>
实现Collection<T>
,它应该具有add(T e)
。和内部setLeftNode(new Node<T>(e)))
:
@Override
public boolean add(T e) {
if (this._root != null){
if(this._root.getLeftNode() == null) {
this._root.setLeftNode(new Node<T>(e));
return true;
}
}
return false;
}
您希望您的BST类与类型T一起工作,因此您应该像一样定义add方法
public boolean add(T e) {
...
}
BST<String> bst = new BST<String>();
bst.add(new String("Hello"))