【问题标题】:What is iterator in Java? [duplicate]Java中的迭代器是什么? [复制]
【发布时间】:2018-02-04 11:24:30
【问题描述】:

我是 Java 新手。我想知道迭代器实际上做了什么以及何时可以使用它。前几天我用 Iterator 来显示 Hashmap 数据,但我不确定它是如何工作的。

【问题讨论】:

  • 你应该参考 java doc
  • 是时候做some reading了。
  • 只需查看文档并使用它。网上有很多例子。
  • 这是一个很好的问题,它并不等同于“在 Java 中使用迭代器有什么好处”。它应该重新打开。

标签: java iterator


【解决方案1】:

正如您在使用它时所看到的,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 循环在顶部的第一个代码块中所做的那样.迭代器本质上是在做第一个 for 循环所做的事情,但当需要检查数据序列时输入的内容更少——我想这通常会经常发生。有关这方面的更多信息,您可能会发现阅读Iterator documentation 会更有帮助。

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2014-03-15
    相关资源
    最近更新 更多