上一篇的Iterable实现了一个Iterator对象,这个接口的子类就是实际的迭代器。
1.hasNext() 判断是否还有元素
boolean hasNext();
2.next() 返回下一个元素
E next();
3.remove()
default void remove() {
throw new UnsupportedOperationException("remove");
}
一般集合都提供了remove方法,为什么迭代器接口还要提供一个接口呢?其实如果在Iterator迭代操作的时候,collection结构有变化,比如新增了一个元素或者删除了一个元素,会报错哦。
也就是说:这里提供了这个方法,可以一边迭代一边remove元素,具体怎么实现的后面分析子类源码的时候再说。
4.forEachRemaining()
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
这个方法跟Iterable的forEach方法类似,不一样的是,forEach是对所有元素,iterator是对剩余的元素。