深入理解迭代器模式

深入理解迭代器模式

说到迭代器,肯定会想到java中遍历java.util.ArrayList时用的的java.lang.Iterator,其中的java.lang.Iterator就是使用了迭代器模式,那为什么要使用迭代器模式呢?
答案是为了在不依赖集合对象的情况下能够遍历集合内容,因为java.util.Arra…

说到迭代器,肯定会想到java中遍历java.util.ArrayList时用的的java.lang.Iterator,其中的java.lang.Iterator就是使用了迭代器模式,那为什么要使用迭代器模式呢?
答案是为了在不依赖集合对象的情况下能够遍历集合内容,因为java.util.ArrayList只是集合的其中一种实现,请看java集合的大家庭
在这里插入图片描述
所有集合的底层接口java.util.Collection便有这么一个方法接口

/**
* Returns an iterator over the elements in this collection. There are no
* guarantees concerning the order in which the elements are returned
* (unless this collection is an instance of some class that provides a
* guarantee).
*
* @return an <tt>Iterator</tt> over the elements in this collection
*/
Iterator<E> iterator();

所以在每一个集合的实现中必然拥有一个获得集合的迭代器的方法,这样所有的集合都可以统一使用迭代器顺序遍历所有的元素,外部进行遍历的时候就不需要关心具体使用了那种集合,是ArrayList呢,还是LinkedList,或者说Vector,dont care!
当然除了大小可动态改变的并且存储不同类型的数据的集合的大家庭,还有大小固定而且只能存储相同类型的数据的数组,虽然数组不能通过已有的方法直接得到迭代器去遍历元素,但我们可以使用迭代器模式去设计一个不管是集合还是数组都能得到一个迭代器去顺序遍历所有元素的类。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×