Thinking in Java 一书写得太好了,忍不住嗖嗖的做笔记….
迭代器存在的必要性:
任何容器类,都必然要有某种方式可以插入元素,然后取出元素。比如说容器类List,add()是插入元素的方法之一,get()是取出元素的方法之一。
从更高的层次来考虑这件事情,会发现当手头的容器类多起来之后,就有些麻烦的事情出来了。本来对List插入取出元素的代码编写了一遍,突然发现如果能够把相同的代码应用于Set,会省很多事。应该怎么办?如何才能不重写代码就可以应用于不同类型的容器?——-迭代器!
迭代器是一个对象,它的工作是遍历并选择序列号中的对象,而客户端程序员不必知道序列底层的结构。迭代器有些奇怪的限制,如Java的Iterator只能单向移动,这个Iterator能用来:
使用Iterator,最强大的威力在于,能够将遍历序列操作与序列底层结构分离。这一点很牛逼!