Iterator 接口作为 Java 集合框架的核心组件提供了一种标准的方法来遍历集合元素。它定义了它 hasNext() 和 next() 判断集合中是否存在下一个元素,以及获取下一个元素,有两种关键方法。正在使用 Iterator 遍历集合时,程序员首先需要集合 iterator() 方法获取 Iterator 例子,然后调用 hasNext() 如果返回,检查集合中是否有下一个元素 true,则调用 next() 该方法获取元素并重复此过程,直到 hasNext() 返回 false。
List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Carol"); // 获取 Iterator 实例 Iterator<String> iterator = names.iterator(); // 集合元素遍历 while (iterator.hasNext()) { String name = iterator.next(); System.out.println(name); }
Iterable 接口是 Iterator 它定义了姐妹界面 iterator() 该方法用于返回集合 Iterator 实例。Iterable 接口的使用比 Iterator 使用起来更方便 Iterable 可直接使用遍历集合 for-each 语句不需要显式地获取, Iterator 实例。
for (String name : names) { System.out.println(name); }
Iterator 和 Iterable 例如,底层实现取决于具体实现的集合类型 ArrayList,它的 Iterator 实例其实是一个指针,指向集中元素,每次调用 next() 该方法将指针移动到下一个元素。对于 LinkedList,它的 Iterator 实例其实是一个每次调用链表节点 next() 该方法将移动到下一个链表节点。
了解 Iterator 和 Iterable 底层原理有助于我们更好地理解 Java 收集框架的操作模式,并编写更高效、更强大的代码。本文对 Iterator 和 Iterable 深入探索是有帮助的 Java 程序员提升对 Java 对框架的理解,从而编写出更加优雅高效的代码。
![](/images/780-200-2.jpg)