迭代器主要是为了支持容器类的遍历, 发展历程如下.
Java 1.5 之前的做法
如果你用的是Java 1.5之前支持的类库, 那么很可能采用的是如下的做法来遍历集合元素:
- 使用
iterator()
要求容器返回一个Iterator
,Iterator
将准备好返回序列的第一个元素; - 使用
next()
获得序列中的下一个元素; - 使用
hasNext()
检查序列中是否还有元素; - 使用
remove()
将迭代器返回的元素删除.
以下是一个实例:
List<String> strs = Arrays.asList("a", "b", "c");
// Java 1.5之前的做法
Iterator<String> iterator = strs.iterator();
while (iterator.hasNext()) {
String str = (String)iterator.next();
out.println(str);
}
Java 1.5支持的做法
Iterable
是Java 1.5的新特性, 主要是为了支持forEach
语法, 使用容器的时候, 如果不关心容器的类型, 那么就需要使用迭代器来编写代码. 使代码能够重用.
使用方法很简单:
List<String> strs = Arrays.asList("a", "b", "c");
for (String str: strs) {
out.println(str);
}
Java 1.8支持的做法
使用接收lambda表达式的forEach
方法进行快速遍历.
List<String> strs = Arrays.asList("a", "b", "c");
// 使用Java 1.8的lambda表达式
strs.forEach(out::println);