任何容器类,都必须有某种方式可以插入元素并将它们再次取回。毕竟持有事物是容器最基本的工作。对于List,add()是插入元素的方法之一,而get()是取出元素的方法之一。
如果从更高层次的角度思考,会发现这里有个缺点:要使用容器,必须对容器上网确切类型编程。初看起来这没有什么不好,但是考虑下面的情况:如果原本是对着List编码的,但是后来发现如果能够把相同的代码应用于Set,将会显得非常方便,此时应该怎么做?或者打算从头开始编程写通用的代码,它们只是使用容器,不知道或者说不关心容器的类型那么如何才能不冲写代码就可以应用于不同类型的容器?
迭代器(也是一种设计模式)的概念可以用于达成此目的。迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为轻量级对象:创建它代价小。因此,经常可以见到对迭代器有些奇怪的限制;例如:java的Iterator只能单项移动,这个Iterator只能用来:
(1)使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
(2)使用next()获得序列中的下一个元素。
(3)使用hasNext()检查序列中是否还有元素。
(4)使用remove()将迭代器新近返回的元素删除。
Iterator能够将遍历序列的操作与序列底层的结构分离
迭代器
最新推荐文章于 2024-10-02 20:27:21 发布