集合的遍历用迭代器效率最高
关于迭代器有基类:Iterator 子类: Iterable 和 ListIterator
区别:
Iterator的内部方法
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
Iterable 多了一个增强for循环
所以我们的语法糖 for 编译之后就是这个接口
public interface Iterable<T> {
Iterator<T> iterator();
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
}
ListIterator 这个可以在任意位置开始,双向遍历
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);
}