我正在创建一个ArraySetIterator类,并且遇到了next()方法的问题。 我做了一些研究,但似乎没有什么对我有用。我确信这是一段简单的代码,但我似乎无法弄明白......
private class ArraySetIterator <E> implements Iterator <E> {
private ArraySet<E> set;
private int index = 0;
public ArraySetIterator(ArraySet<E> set) {
this.set = set;
}
public boolean hasNext() {
return (index + 1) < set.size();
}
public E next() {
???
}
public void remove() {
set.remove(index);
}
}
答案 0 :(得分:1)
next()
应该增加索引并返回当前元素。另外,如果没有剩余的元素可以迭代,它应该抛出NoSuchElementException
。
答案 1 :(得分:1)
这有效:
public E next() {
return set.get(index++);
}
您可能还想考虑检查hasNext()
是否为真。
编辑:根据您的评论,听起来ArraySet
只是在实施Set
interface。所以你不能使用.get()
。我认为你需要做这样的事情:
private class ArraySetIterator <E> implements Iterator <E> {
private E[] set;
private int index = 0;
public ArraySetIterator(ArraySet<E> set) {
this.set = (E[]) set.toArray();
}
public boolean hasNext() {
return (index + 1) < set.length;
}
public E next() {
if(hasNext) {
return set[index++];
} else {
throw new NoSuchElementException();
}
}
public void remove() {
throw new UnsupportedOperationException();
}
}