Iterable接口中封装了Iterator接口,实现Iterable就可以使用foreach结构了。
Iterator中和核心的方法next(),hasnext(),remove(),都是依赖当前位置,如果这些集合实现Iterator,则必须包括当前迭代位置的指针。
当集合在方法间进行传递的时候,由于当前位置不可知,所以next()之后的值,也不可知。
而当实现Iterable则不然,每次调用都返回一个从头开始的迭代器,各个迭代器之间互不影响。
所有Iterable接口更适合传递结合,并可以使用foreach结构。
public void test( Iterable <IntWritable> val )
for(IntWritable each : val){
System.out.println(each);
}