| 
 
| JAVA迭代器详解 1、Interable、Iterator和ListIterator
 1)迭代器生成接口Interable,用于生成一个具体迭代器
 public interface Iterable<T>{
 Interator<T> iterator();
 }
 2)迭代器接口Iterator,用于遍历集合和移除元素,只能向前移动
 public interface Iterator<T>{
 boolean hasNext();     //判断下一个元素是否存在
 T next();              //返回下一个元素
 void remove();         //移除元素
 }
 3)表迭代器ListIterator
 (1)继承了Iterator
 (2)可以双向移动
 (3)只能用于各种List类的访问
 (4)可获取当前元素的前后元素的索引
 2、Collection的子类(接口)除了List外,都实现了Interable接口,但List的抽象子类AbstractList实现了Interable接口。
 3、Collection的子类(接口)都没有实现Iterator接口。但是,Collection的子类重写Interable接口的iterator()方法时,使用匿名内部类的方式实现Iterator接口。例如:
 public Interator<T> integrator(){
 return new Iterator<T>(){
 private int index = 0;
 public boolean hasNext(){ return indext < size;}  //size为集合元素的个数
 public T next(){ return array[index++];}  // array是存放元素的数组
 public void remove(){}   //不使用,就不需要实现
 }
 }
 4、JAVA使用迭代器表示容器间的共性,而不是使用Collection。
 5、Map及其子类没有实现Interable、Iterator
 但是,Map内部生成Collection,从而间接实现Iterable接口和生成Iterator,所以,Map也可以使用迭代器。
 6、foreach与迭代器
 (1)foreach可用于数组和Collecton的所有对象
 (2)foreach可用来遍历集合的原因是:foreach用Iterable在序列中移动。因此,任何实现了Iterable类都可用foreach遍历。
 (3)foreach的java形式:for( :)
 
 
 
 
 
 | 
 |