Iterator存在的意义

Iterator的目的是实现数据的遍历,不是搜索。
■网友
我感觉 Iterator 更多的时候是一个接口作用。在实际编程中,确实有一些迭代的逻辑并不是直截了当的,需要编程者详细给出一个迭代的逻辑。有这个一个接口在的话,调用者就可以不去关心迭代是如何实现的了。所以即使支持自行搜索的数据结构也加一个迭代器的话,可以有效的解耦。
■网友
除了上述知友说的原因外,还想补充一点:有时候iterator会大幅提高遍历的性能。例如:LinkedList1. 如果使用iterator,会从一个节点直接通过next指针获得下一个节点。所以遍历整个列表数据时间复杂度为O(N);2. 如果使用普通遍历方法,每遍历一个节点就会调用get(idx)方法,get方法会遍历整个列表以找到idx对应的数据(严格的说在java中是遍历半个列表查找对应数据)。所以遍历整个列表数据时间复杂度是O(N^2)。
■网友
迭代器让你游走于聚合中的每个元素而不必知道他的具体实现。


    推荐阅读