Iterator 模式是用于遍历集合类的标准访问方法。
它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
迭代器Iterator的遍历
while循环
Iterator it = list.iterator();
while (it.hasNext()) {
..........
}
for循环
for (Iterator it = list.iterator(); it.hasNext();) {
//迭代器的next方法返回值类型是Object,所以要记得类型转换。
String next = (String) it.next();
System.out.println(next);
}
使用迭代器清空集合
Iterator it = coll.iterator();
while (it.hasNext()) {
// 调用remove之前没有调用next是不合法的
it.next();
it.remove();
}
Iterator 总是用同一种逻辑来遍历集合。使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由 Iterator 来维护。客户端从不直接和集合类打交道,它总是控制 Iterator,向它发送”向前”,”向后”,”取当前元素”的命令,就可以间接遍历整个集合。
java.util.Iterator
迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:
Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics.
1、迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
Method names have been improved.
2、方法名称得到了改进。
java.util.ListIterator
ListIterator有以下功能:
- 允许我们向前、向后两个方向遍历 List;
- 在遍历时修改 List 的元素;
- 遍历时获取迭代器当前游标所在位置。
注意:迭代器 没有当前所在元素一说,它只有一个游标( cursor )的概念,这个游标总是在元素之间。
参考:
https://blog.csdn.net/u011240877/article/details/52743564
https://blog.csdn.net/u011240877/article/details/52752589
https://wiki.jikexueyuan.com/project/java-enhancement/java-thirty.html
https://blog.csdn.net/qq_33642117/article/details/52039691