final List<String> animals = new ArrayList<String>();
animals.add("Rhino");
for (int i = 0; i < list.size(); i++) {
// Do stuff
}
for (String data : list) {
// Do stuff
}
虽然后一种样式没有显示它,但是for循环的标题更像下面的样式
final Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String creature = iter.next();
// Do stuff
}
# 1 楼答案
正如您在使用Iterator时所看到的,Iterator将允许您检查数据序列,一次检查一段数据。迭代器用于增强的for循环。下面是两种for循环样式;第二种样式隐式地使用这些
虽然后一种样式没有显示它,但是for循环的标题更像下面的样式
迭代器本身就是一个接口,当需要为数据结构编写自己的方法时,可以实现两种方法:boolean hasNext()和String next()。它们的用法如前一个示例所示
此外,还有一种方法实际上不必实现:void remove()。如果实现,迭代器就能够在迭代过程中删除数据结构中的项,如下所示
如果运行上面的代码,这就是控制台
就实现迭代器而言,其基本思想是跟踪您在所迭代的数据序列中的位置,就像for循环的第一个版本在顶部的第一个代码块中所做的一样。迭代器本质上是在做第一个for循环所做的事情,但是当需要检查数据序列时,它的类型就更少了——我想这通常是经常发生的。有关这方面的更多信息,您可能会发现阅读Iterator documentation更有用