有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

什么是Java中的迭代器?

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


共 (1) 个答案

  1. # 1 楼答案

    正如您在使用Iterator时所看到的,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
    }
    

    迭代器本身就是一个接口,当需要为数据结构编写自己的方法时,可以实现两种方法: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更有用