java集合迭代器(Iterator)的认识

来源:互联网 发布:鹊桥淘宝客入口 编辑:程序博客网 时间:2024/05/17 12:05

Iterator(迭代器)

 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。  使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。, Iterator是作为一个接口存在的,它定义了迭代器所具有的功能。

iterator的源码:

    package java.util;      public interface Iterator<E> {          boolean hasNext();          E next();          void remove();      }  

在Iterator接口中定义了三个方法:
这里写图片描述

我们常常使用JDK提供的迭代接口进行javacollection的遍历
  方法实例:
  这里写图片描述

迭代器模式给容器的应用带来以下好处:

1) 支持以不同的方式遍历一个容器角色。根据实现方式的不同,效果上会有差别。2) 简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。3) 对同一个容器对象,可以同时进行多个遍历。因为遍历状态是保存在每一个迭代器对象中的。

由此也能得出迭代器模式的适用范围:

1) 访问一个容器对象的内容而无需暴露它的内部表示。2) 支持对容器对象的多种遍历。3) 为遍历不同的容器结构提供一个统一的接口(多态迭代)。

子类 ListIterator

上面可以看到,Iterator只提供了删除元素的方法remove,如果我们想要在遍历的时候添加元素怎么办?
  ListIterator接口继承了Iterator接口,它允许程序员按照任一方向遍历列表,迭代期间修改列表,并获得迭代器在列表中的当前位置。

ListIterator接口定义了下面几个方法:
这里写图片描述

下面使用ListIterator来对list进行边遍历边添加元素操作:
这里写图片描述

原创粉丝点击