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对象,这个对象必须知道自己如何遍历该集合。

posted @ 2021-06-20 14:28  ShineLe  阅读(28)  评论(0)    收藏  举报