Java 二叉搜索树实现中迭代器和泛型的困难

Java 二叉搜索树实现中迭代器和泛型的困难,java,generics,iterator,binary-tree,Java,Generics,Iterator,Binary Tree,我正在研究java中的数据结构,在二进制搜索树中使用泛型时遇到了困难 对于我们的任务,我们将使用包含父节点、左节点和右节点以及数据值的节点实现二叉搜索树 本例中的数据值采用Pair对象的形式。这就是它看起来的样子: public class Pair<A,B> { public final A fst; public final B snd; public Pair(A x, B y) { fst = x; snd = y; }

我正在研究java中的数据结构,在二进制搜索树中使用泛型时遇到了困难

对于我们的任务,我们将使用包含父节点、左节点和右节点以及数据值的节点实现二叉搜索树

本例中的数据值采用Pair对象的形式。这就是它看起来的样子:

public class Pair<A,B> {

    public final A fst;
    public final B snd;

    public Pair(A x, B y) {
        fst = x;  snd = y;
    }

    public String toString() {
      return new String("("+fst.toString()+", "+snd.toString()+")");
    }
}
公共类对{
公开决赛;
公开期末考试B-snd;
公共对(A x,B y){
fst=x;snd=y;
}
公共字符串toString(){
返回新字符串(“+fst.toString()+”,“+snd.toString()+”);
}
}
Pair与两个不同的泛型关联,第一部分是键,第二部分是与该键关联的值

我还需要在我的BST类中实现迭代器。我在一个内部类中实现迭代器,该类类似于:

public Iterator<Pair<K,T>> iterator() {
    return new BSTMapIter<Pair<K,T>>(this.root, this.size, this.order);
}

private class BSTMapIter<Pair<K,T>> implements Iterator<Pair<K,T>> { <=== Compiler error "> expected"
    ...
    ... (Implementation here)
    ...
}
公共迭代器迭代器(){
返回新的BSTMapIter(this.root、this.size、this.order);
}

私有类BSTMapier实现迭代器{问题在于您试图使BSTMapier泛型的方式。它需要在两个类型参数中是泛型的,
K
T
部分在这一点上是不相关的。(但对于它实现的接口,这一点很重要。)因此,宣言应该是:

private class BSTMapIter<K,T> implements Iterator<Pair<K,T>>
私有类BSTMapier实现迭代器
但是,如果您希望BSTMapier本身是泛型的,则需要这样做。如果这是类型中的嵌套类,并且该类型已将K和T作为类型参数,则您可能只需要:

private class BSTMapIter implements Iterator<Pair<K,T>>
私有类BSTMapier实现迭代器
您还希望以稍微不同的方式对其进行实例化:

// When it's an inner class
public Iterator<Pair<K,T>> iterator() {
    return new BSTMapIter(this.root, this.size, this.order);
}

// When it's a standalone generic class
public Iterator<Pair<K,T>> iterator() {
    return new BSTMapIter<K, T>(this.root, this.size, this.order);
}
//当它是一个内部类时
公共迭代器迭代器(){
返回新的BSTMapIter(this.root、this.size、this.order);
}
//当它是一个独立的泛型类时
公共迭代器迭代器(){
返回新的BSTMapIter(this.root、this.size、this.order);
}