一、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);
}