一、Iterator接口
Iterator接口是集合的迭代器,代替Java集合框架中的枚举,允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove() {
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
二、ListIterator接口
ListIterator接口除了事项Iterator提供的前向遍历的方法外,还提供了反向遍历的方法,老外的向前向后方向与我有偏差,害苦我了。
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
//如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true。 (换句话说,如果previous()将返回一个元素而不是抛出异常,则返回true。)
boolean hasPrevious();
//返回列表中的上一个元素,并向相反方向移动光标位置。 可以反复调用此方法来反向遍历列表,或者将来自next()的调用混合在一起来回移动。 (请注意,对next和previous的交替调用将重复返回相同的元素。)
E previous();
//返回后续调用next()返回的元素的索引。
int nextIndex();
//返回后续调用previous()返回的元素的索引。(如果列表迭代器位于列表的开头,则返回-1)
int previousIndex();
void remove();
void set(E e);
}