为 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;
}
}
您好,我想为扩展抽象集合的 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;
}
}