2021.6.20:Iterator
关于for each
Java集合类都可以使用for each循环:
for(String s : list){...}
然而实际上,Java并不知道如何遍历List。上述代码之所以能通过,是因为编译器把for each循环通过Iterator改写为了普通的for循环:
for(Iterator <String> it = list.iterator(); it.hasNext() ; ){ String s = it.next(); ... }
这种通过Iterator对象遍历集合的模式称为迭代器。
优点
使用Iterator遍历时,调用方总是以统一的方式遍历各种集合类型,而不必关心它们内部的存储结构。
因为Iterator是集合对象自己在内部创建的,它自己知道如何高效遍历内部的数据集合,调用方获得了统一的代码,编译器才能把for each自动转换为Iteraor遍历。
编写集合类
如果我们自己编写集合类,想要使用for each循环,只需要满足以下条件:
- 该类实现Iterable接口,该接口要求返回一个Iterator对象;
- 用Iterator对象迭代集合内部数据。
这里的关键在于,集合类通过调用iterator()方法,返回一个Iterator对象,这个对象必须知道自己如何遍历该集合。

浙公网安备 33010602011771号