0、迭代器用法:java
List<T> list = new ArrayList<T>(); /* *list的相关操做; */ Iterator<T> iterator= list.iterator(); while(iterator.hasNext()){ T o=iterator.next(); //iterator.remove(); }
一、Java迭代器提供的接口定义:java.lang.Iterable;spa
public interface Iterable<T> {//jdk源码 Iterator<T> iterator(); }
经常使用的数据容器,如ArrayList、HashSet、Stack、Vector等等都是实现了该接口;code
二、Iterator迭代器介绍:java.util.Iterator;对象
先说说Iterator跟Iterable的区别;接口
Iterable<T>是迭代器与数据容器的接口,即数据容器要使用Iterator,就必须实现Iterable;rem
Iterator<T>是迭代器的接口,须实现hasNext(),next(),remove(),三个元素方法;源码
为何在Iterable接口里面的方法不是直接定义三个方法?it
这种方法不具有多态性,即设定好了该如何执行hasNext()等操做,并且程序会显得十分的臃肿和复杂。可是若是采用实施Iterable()接口和返回Iterator对象的方式,则会全然的不一样,只要可以返回Iterator对象,彻底能够本身的须要进行遍历方式上的自由定义。class