迭代器
迭代器模式:提供一种方法对一个容器对象的各个元素进行访问,而又不暴露该容器的内部细节。
java集合框架的集合类,我们有时候称之为容器。容器的种类有很多,如:ArrayList,LinkedList,HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。
因为容器的内部结构不同,很多时候看能不知道该怎样去遍历一个容器中的元素,所以为了使对容器内元素的操作更为简单,java引入了迭代器。
把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。
对于数组,我们使用的是下标来进行处理:
int array[] = new int[3];
for(int i = 0;i < array.length;i ++){
System.out.println(array[i]);
}
对于ArrayList,我们使用的是:
List<String> list = new ArrayList<String>();
for(int i = 0;i < list.size();i ++){
System.out.println(list.get(i));
}
对于这两种方式,我们总是知道它的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来,不同的集合会对应的遍历方法客户端代码无法复用。在实际应用中,如何将上面两个集合整合是相当麻烦。Iterator总是用同样一种逻辑来遍历集合,使得客户端自身不需要维护集合的内部结构,所有的内部状态由Iterator来维护,客户端不用直接和集合打交道,而是通过控制Iterator,向它发送指令,然后完成遍历
## java.util.Iterator
### 在java中,Iterator为一个接口,它只提供了迭代的基本规则。在JDK中它是这样定义的:对Collection进行迭代的迭代器。迭代器取