为 abstractCollection 实现迭代器

Implementing Iterator for abstractCollection

您好,我想为扩展抽象集合的 class 实现迭代器。

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

迭代器应如下所示

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();
    }   
}

我收到的错误消息是我的 class Name 没有覆盖或实现 Iterator,并且迭代器无法覆盖迭代器,因为类型不兼容,它说我正在使用两个不同的但在哪里和我如何以及如何摆脱它?

没有 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;
    }
}