嗨,我想为扩展抽象Collection的类实现迭代器。

class Name<E extends Comparable<E>>
extends AbstractCollection<CompRational>
implements Iterable<E>{
...
  public Iterator<E> iterator(){
    return new NameIterator<E>(this);
  }
...
}


并且Iterator应该看起来像这样

class NameIterator<E extends Comparable<E>> implements Iterator<E>{
    private Name<E> tree;
    private int pos = 0;

    public NameIterator ( Name<E> t) {
        ...
    }

    @Override
    public boolean hasNext() {
        ...
    }

    @Override
    public E next () {
        ...
    }

    @Override
    public void remove(){
        throw new UnsupportedOperationException();
    }
}


我收到的错误消息是,我的类Name不覆盖或实现Iterator,并且迭代器不能覆盖Iterator,因为类型不兼容,它表示我正在使用两个不同的对象,但是我在哪里以及如何以及如何摆脱它。 ?

PS:感谢所有有用的评论,但我是个白痴,关键部分AbstractCollection<CompRational>甚至不是问题的一部分。萨里完全忘记了这一点。如果可能,请删除它。

最佳答案

没有Collection实现Iterator。这是针对Iterator实例的。您的具体集合需要扩展AbstractCollection,并且您的NameIterator实现Iterator

class Name<E extends Comparable<E>> extends AbstractCollection {

    @Override
    public NameIterator<E> iterator() {
        return new NameIterator<>();
    }

    @Override
    public int size() {
        return 0;
    }
}

class NameIterator<E extends Comparable<E>> implements Iterator{

    @Override
    public boolean hasNext() {
        return false;
    }

    @Override
    public E next() {
        return null;
    }
}

07-28 00:58
查看更多