Java Iterator 接口

迭代器接口 Iterator 定义了迭代一个集合或序列所需的操作。在本教程中,我们将通过示例学习 Java 中的迭代器接口 Iterator 和它的用法。

在本教程中,我们将通过示例学习 Java 中的迭代器接口 Iterator 和它的用法。

迭代器接口 Iterator 定义了迭代一个集合或序列所需的操作。通过迭代器里接口,能一直获取需要迭代的下一个元素,知道全部元素迭代完成。

Collection 接口所有的子接口及其实现类(比如 List, Set, Queue, Dequue, ArrayList, HashSet, ArrayDeque 等)的都定义或实现了 iterator() 方法返回自己的迭代器,因此所有的集合都能使用 for-each 语句遍历集合中的元素。

Iterator 接口有一个子接口 ListIteratorListIterator 接口适用于迭代列表对象,并可以在迭代过程中修改列表数据。

Listiterator 接口扩展了 Java Iterator 接口。

迭代器的方法

Iterator 接口提供了 4 种方法,可用于对集合的元素执行各种操作。

  • hasNext() - 如果还有要迭代的元素则返回 true
  • next() - 返回要迭代的下一个元素
  • remove() - 删除并返回的上一次使用 next() 迭代的元素
  • forEachRemaining() - 为迭代器中剩余的每个元素都执行指定的操作

示例:ArrayList 的迭代器

在下面的示例中,我们展示了如何使用迭代器迭代 ArrayList 对象。

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<>();
    numbers.add(1);
    numbers.add(3);
    numbers.add(2);
    System.out.println("ArrayList: " + numbers);

    // 获取迭代器
    Iterator<Integer> iterate = numbers.iterator();

    // 使用 next() 获取一个元素
    int number = iterate.next();
    System.out.println("当前的元素: " + number);

    // 删除刚刚迭代的元素
    iterate.remove();
    System.out.println("删除的元素: " + number);

    System.out.println("是否还有未迭代的元素: " + iterate.hasNext());

    System.out.print("剩余的元素: ");
    iterate.forEachRemaining((value) -> System.out.print(value + ", "));
  }
}

输出

ArrayList: [1, 3, 2]
当前的元素: 1
删除的元素: 1
是否还有未迭代的元素: true
剩余的元素: 3, 2,

在上面的例子中,注意语句:

iterate.forEachRemaining((value) -> System.put.print(value + ", "));

在这里,我们将 lambda 表达式作为 forEachRemaining() 方法的参数传递。

(value) -> System.put.print(value + ", ")

上面 lambda 表达式的意思是打印当前元素。