Java之 Iterable与Iterator的关系

有一个问题,为什么不直接将hasNext(),next()方法放在Iterable接口中,其他类直接实现就可以了?

原因是有些集合类可能不止一种遍历方式,实现了Iterable的类可以再实现多个Iterator内部类,

例如LinkedList中的ListItrDescendingIterator两个内部类,就分别实现了双向遍历和逆序遍历。

通过返回不同的Iterator实现不同的遍历方式,这样更加灵活。如果把两个接口合并,就没法返回不同的Iterator实现类了。

public interface Iterator<E> {
    boolean hasNext();
      E next();
}
public interface Iterable<T> {
  Iterator<T> iterator();
}
原文地址:https://www.cnblogs.com/sabertobih/p/13551123.html