Big*_*air 1 java iterator iterable
我有一个实现 Iterable 的类,但有自己的hasNext()
和这样的next()
方法:
public class BLMovie implements Iterable<BLMovieFrame> {
@Override
public Iterator<BLMovieFrame> iterator() {
iteratorVar = 0;
return liste.iterator();
}
public boolean hasNext() {
if (loop)
return true;
return iteratorVar < liste.size();
}
public BLMovieFrame next() {
iteratorVar = (iteratorVar++)%(liste.size()-1);
return liste.get(iteratorVar);
}
public void remove() {
throw new UnsupportedOperationException();
}
Run Code Online (Sandbox Code Playgroud)
我很确定这不是最好的方法,
关于 Iterable 的其他线程似乎并不关心自己的下一个方法,所以有人对我有建议吗?
您的方法定义在错误的类上。的hasNext
,next
而remove
方法需要在规定的Iterator
执行,而不是在Iterable
。如果您在每个方法上放置了 @Override 注释,编译器就会通知您这个错误。
照原样,您可以:
请注意,当您这样做时,您将无法再利用嵌入列表的迭代器,但您将有效地定义自己的迭代器(当然,您可以将其包装起来)。