什么是Java中的迭代器?

时间:2018-02-04 11:24:31

标签: java iterator

我是java的新手。我想知道Iterator究竟是做什么的?当我可以使用迭代器。几天前我使用iterator显示Hasmap数据,但我不确定它是如何工作的。

1 个答案:

答案 0 :(得分:2)

正如您在使用它时看到的那样,Iterator将允许您一次检查一系列数据,一个数据。迭代器用于增强的for循环。下面是两个for循环样式;第二种风格隐含地使用这些。

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
}

就其本身而言,Iterator是一个接口,当需要为数据结构编写自己的方法时,有两种方法可以实现: boolean hasNext() String next()。它们的用法如前例所示。

此外,还有一种方法您实际上不必实施: void remove()。如果实现,迭代器就能够在迭代中删除数据结构中的项目,如下所示。

final List<String> animals = new ArrayList<>();
animals.add("Kangaroo");
animals.add("Manatee");
animals.add("Tauntaun");

for (final String creature : animals) {
    System.out.println(creature);
}
System.out.println();

final Iterator<String> iter = animals.iterator();

while (iter.hasNext()) {
    final String creature = iter.next();

    if (creature.equals("Manatee")) {
        iter.remove();
    }
}

for (final String creature : animals) {
    System.out.println(creature);
}
System.out.println();

如果你运行上面的代码,这是控制台。

Kangaroo
Manatee
Tauntaun

Kangaroo
Tauntaun

在实现迭代器方面,基本思想是跟踪你在迭代的数据序列中的位置,就像for循环的第一个版本在第一个代码块中所做的那样。顶端。 Iterator基本上是做第一个for循环所做的事情,但是当需要检查数据序列时需要更少的类型 - 我想这通常会经常发生。有关详细信息,您可能会发现阅读Iterator documentation更有帮助。