package java.util;
import java.util.function.Consumer;
/**
* @param <E> the type of elements returned by this iterator
*
* @author Josh Bloch
* @see Collection
* @see ListIterator
* @see Iterable
* @since 1.2
*/
public interface Iterator<E> {
//即判断还有没有下一个元素
boolean hasNext();
//返回下一个在迭代器里面的元素,没有就抛NoSuchElementException异常
E next();
//默认从集合中删除最后一个元素,默认实现抛出一个UnsupportedOperationException异常,message信息为remove
default void remove() {
throw new UnsupportedOperationException("remove");
}
//JDK8新加的方法
//为每个剩余元素执行给定的操作,直到所有的元素都已经被处理或行动将抛出一个异常。
//通过反复调用next方法,就可以对集合完成访问操作。但是如果到达集合末尾,next方法将会抛出一个NoSuchElementException。
//因此,需要在调用next方法之前,调用hasNext方法做判断。如果迭代器对象还有多个可供访问的元素,则这个方法返回true。
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}