2

以下に示すコレクション インターフェイスを実装する B ツリー クラスを作成しようとしています。ここでの問題は、add メソッドがオブジェクトを受け取り、私のノード クラス setleftNode がジェネリック型「T」のノードを受け取ることです。したがって、コンパイル時に method cant be applied to given type エラーが発生します。:

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;
    }
}
4

2 に答える 2

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;
}
于 2012-09-09T21:52:26.607 に答える
0

BST クラスを T 型で動作させたい場合は、同様に add メソッドを定義する必要があります。

public boolean add(T e) {
...
}

BST<String> bst = new BST<String>();
bst.add(new String("Hello"))
于 2012-09-09T21:52:15.727 に答える