本文将对迭代器进行处理(Iterator)从四个方面进行详细说明。
1. 是什么迭代器(Iterator)它可以用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址。
一般来说,迭代器表现得像指针,读取集合或数组中的一个值,读取后指向下一个数据,一个个过去。
2. 为什么众所周知,有很多数据容器,包括数组、链表、树木等。对应数据容器中的元素也有自己的方法。想象一下,如果我们想找到数组和集合设计的算法,因为在数组和集合中找到下一个元素的操作是不同的,只是为了找到它们。核心思想是寻找下一个元素,但显然要实现两套不同的代码并不好。
有了迭代器,我们可以将算法与特定的容器分离。它可以遍历并选择序列中的对象,而我们不需要了解序列的底层结构。也就是说,我们只需要实现一套功能代码。例如,为了实现搜索,只要代码适用于迭代器,就不需要考虑您的功能代码在不同容器之间的底层实现。
3.怎么用有许多类型的迭代器,如单向、双向等。但核心功能是相似的,当需要追求特定容器时,可以选择更特殊的迭代器。
比如Java Iterator ,功能相对简单,只能单向移动:
(1) iterator() 要求容器返回Iterator 。Iteratortor第一次调用 next() 它返回序列的第一个元素。注:iterator() 方法是java.lang.Iterable 接口,被 Collection 继承。
(2) 使用next() 在序列中获得下一个元素。
(3) 使用hasnext() 检查序列中是否有元素。
(4) 使用remove() 删除迭代器新返回的元素。
Iterator 是 Java 迭代器最简单的实现是 List设计 ListIterator 它有更多的功能,可以从两个方向遍历List ,也可以从List出发 插入和删除元素。
4.注意1.在迭代器迭代元素的过程中,如果需要添加或删除,只能使用迭代器的方法,不允许使用集合对象来改变集合元素的数量。
2.如果使用集合对象来改变集合中元素的数量,则会报告错误:不要改变数量,也可以替换。
3.迭代器的生存周期是从创建到使用结束。
4. foreach : Iterator 封装变形,变得比 Iterator更简单。但他也需要知道数组或集合的类型。而且,Iterator 需要注意的,foreach 还需要注意。