https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
public interface Iterator<E>
一、简介
位于包 java.util中,Iterator<E>接口是Java集合框架的成员,E表示这个迭代器返回的元素的类型。
一个集合的迭代器。迭代器在Java的集合框架中取代枚举。迭代器与枚举有两种不同之处:
- 迭代器允许调用者在迭代过程中使用明确定义的语义从底层集合中移除元素;
- 改进了方法名称
二、方法
1、boolean hasNext()
若迭代中还有元素,返回“true”。换句话说,当next()方法还能返回一个元素而不是抛出异常时,hasNext()返回“true”。
2、E next()
返回迭代中的下一个元素。
如果迭代中没有更多的元素了,抛出“NoSuchElementException”。
3、default void remove()
从底层集合中移除此迭代器返回的上一个(最后一个)元素。
每次调用next()方法时,只能调用该方法一次。
在迭代进行时,如果用了调用这个方法以外的其它方式对底层集合进行了修改,则迭代器的行为是不明确的。
如果迭代器不支持移除操作,抛出“UnsupportedOperationException”异常,且不执行其它操作。
如果next()方法还未被调用,或者remove()方法在上一次next()调用后已经被调用过了,抛出“IllegalStateException”。
4、default void forEachRemaining(Consumer<? super E> action)
action,要为每个元素执行的操作。
interface Consumer<T>,是一个功能性接口,它表示接受单个输入参数且不返回结果的操作。它的功能性方法为void accept(T t)——用参数t实现操作。
对每个剩余元素执行给定操作,直到处理完所有元素或操作抛出异常。
如果指定了迭代顺序,则按迭代顺序执行操作。该操作引发的异常会中继给调用者。
一般的实现为:
while (hasNext()) action.accept(next());
如果指定的操作为空,抛出“NullPointerException”。