迭代器
迭代,在程序中特指对某集合中各元素逐个取用的行为。迭代器模式(Iterator)提供了一种机制来按顺序访问集合中的各元素,而不需要知道集合内部的构造。换句话讲,迭代器满足了对集合迭代的需求,并向外部提供了一种统一的迭代方式,而不必暴露集合的内部数据结构。
物以类聚
迭代的过程是基于一系列数据展开的,所以集合是不得不提的概念。物以类聚,集合是由一个或多个确定的元素构成的整体,其实就是把一系列类似的元素按某种数据结构集结起来,作为一个整体来引用,以便于维护。简单来讲,可以把集合理解为“一堆”或者“一群”类似的元素集结起来的整体。为了承载不同的数据形式,集合类提供了多种多样的数据结构,如我们常用的ArrayList、HashSet、HashMap等
每种集合都有不同的特性,可以满足对各种数据结构的承载需求。有了集合才会产生对其迭代的需求,而每种数据结构的迭代方式又不尽相同,所以,定义标准化的迭代器势在必行,以提供统一、通用的使用方法
循环往复
遍历是一种周而复始的体现。生活中也有很多这样的场景,例如生产线上对每件产品加工过程的重复,再如读书时对每一页的翻阅动作的重复。为了达到遍历的目的,对元素的迭代是必不可少的。而迭代器则可以帮助我们对当前状态进行自动记录,并提供获取下一个元素的方法。如所示,书是由很多页元素组成的集合,我们读书时通常是从前往后翻阅,这时页码会按翻阅顺序逐步增大,如此才能将书页连接起来以保证内容的连续性和完整性,这个过程就可以被看作对整本书的迭代遍历
在我们的阅读过程中,有时会用到一些工具来记录我们的阅读状态,例如大家常常用到的书签,我们会将它夹在书页中标记当前的阅读位置,下次阅读时就不会忘记上次读到哪一页了。从某种程度上讲,书签有点类似于迭代器的角色,它记录着读者访问书页的迭代状态。
当然,不迭代也是可以进行遍历的,但会不可避免地产生大量重复代码