有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java泛型、集合接口和对象类的问题

我正在尝试创建一个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;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    如果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;
    }