package java.lang;
public interface Iterable<AnyType>
{
Iterator<AnyType> iterator();
}
Iterable接口 (java.lang.Iterable) 是Java集合的顶级接口之一。
Iterable接口中只包含一个方法,就是一个iterator()方法,用来返回一个Iterator类型的对象,或者说返回一个实现了Iterator接口的对象。
实现了Iterable接口的类可以拥有增强的for循环,即只要实现了Iterable接口的类,就可以使用Iterator迭代器了。
集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用foreach进行迭代。
Iterator接口:
package java.util;
public interface Iterator<AnyType>
{
boolean hasNext();
AnyType next();
void remove();
}
Iterator接口中的核心方法next(),hasNext(),remove(),都是依赖当前位置。
如果这些集合直接实现Iterator接口,则势必导致集合对象中包含当前迭代位置的数据(指针)。当集合在不同方法间进行传递的时候,由于当前迭代位置不可知,所以next()的结果也不可知。除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。 而当实现Iterable则不然,每次调用都返回一个从头开始的迭代器,各个迭代器之间互不影响。