嗨,我想为扩展抽象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;
}
}