Iterator is a method of interface Iterable.
public interface Iterable<T> {
Iterator<T> iterator();
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
}
List接口继承Collection接口,Collection接口继承Iterable接口。
```java
public interface List<E> extends Collection<E> {
...
}
public interface Collection<E> extends Iterable<E> {
...
}
for each循环内部也是依赖于Iterator迭代器
```java
for (int i : list) {
System.out.println(i);
}
After decompilation
int i;
for(Iterator iterator = list.iterator(); iterator.hasNext(); System.out.println(i)){
i = (Integer)iterator.next();
}
Implemented in List
List list = new ArrayList();
list.add(1);
list.add("123");
Iterator iterator = list.iterator();
while (iterator.hasNext())
{
System.out.println(iterator.next());
}