Iterator :
迭代器: 获取出集合中存储对象的方式,简称,迭代,遍历
Collection接口中,定义了一个方法 iterator() 既然接口中定义了方法,下面所有的小弟都有这个方法
List Set ArrayList LinkedList Vector HashSet TreeSet
方法含义: iterator() 获取迭代器对象 返回值类型 Iterator iterator()
Iterator 是一个接口,iterator方法返回了一个接口的类型,方法返回的肯定是接口的实现类的对象
Iterator接口中的方法 只有三个方法
boolean hasNext() 判断集合中有没有下一个元素,如果有返回true
Object next() 获取集合中的下一个元素
void remove() 移除集合中的元素
Iterator iterator() 返回的是 迭代器接口Iterator的实现类的对象? 实现类是谁
但是这个实现类,实现了Iterator接口,重写了 三个方法
由于集合每个子类本身的特点不同,存储元素的方式不同,获取方式也就随之不同
因此规定一个接口,不管获取的方式是什么,必须满足接口中的三个方法
将Iterator接口的实现类,定义在了集合的内部类,内部类实现了Iterator接口,重写了三个抽象方法
interface Iterator{
boolean hasNext();
Object next();
void remove();
}
Iterator it = new ArrayList().iterator();
public class ArrayList extends AbstractList implements List{
//Collection中定义了方法iterator() 实现类ArrayList必须重写这个方法
public Iterator iterator(){
return new Itr();
}
//定义了一个内部类,实现了Iterator接口
private class Itr implements Iterator{
public boolean hasNext(){ return false;}
public Object next(){return null;}
public void remove(){}
}
}
注意事项:
没有元素了,不能继续next
迭代中不要使用集合方法修改长度,否则出现并发修改异常
一次迭代中不允许多次next
|
|