📜  Java迭代器接口(1)

📅  最后修改于: 2023-12-03 14:43:04.919000             🧑  作者: Mango

Java迭代器接口

Java迭代器接口是Java集合框架中的一个重要接口,它是一组访问集合元素的方法,可以在迭代过程中访问集合中的每个元素,从而完成对集合元素的遍历。

迭代器接口定义

在Java中,迭代器接口被定义在java.util包中。它是一个泛型接口,定义如下:

public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove();
}

迭代器接口定义了三个方法:

  1. hasNext():用于判断集合中是否还有元素可以遍历,若有则返回true;否则返回false。
  2. next():用于返回集合中的下一个元素。
  3. remove():用于从集合中删除迭代器返回的最后一个元素。
迭代器接口实现

Java集合框架中的所有集合类都实现了迭代器接口,因此可以使用迭代器来遍历这些集合。下面以ArrayList类为例介绍如何使用迭代器。

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

public class Example {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

上述代码中,首先创建了一个ArrayList对象,并向其中添加了三个字符串元素。然后使用iterator()方法获取迭代器对象,然后使用while循环遍历集合中所有元素。在循环中,迭代器的hasNext()方法用于判断集合中是否还有元素可以遍历,next()方法用于获取集合中的下一个元素。

迭代器遍历与删除元素

迭代器不仅可以用于遍历集合元素,还可以用于删除集合中的元素。删除元素的方法是使用remove()方法,该方法会删除由上一次调用next()方法返回的元素。

如果在使用迭代器的过程中直接删除集合中的元素,则会抛出ConcurrentModificationException异常。因此,使用迭代器删除元素时必须使用remove()方法。

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

public class Example {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String element = it.next();
            if (element.equals("Python")) {
                it.remove();
            }
        }

        System.out.println(list);
    }
}

上述代码中,在迭代器遍历集合元素的过程中,判断遍历到的元素是否等于"Python",若是则使用迭代器删除该元素。最后输出删除后的集合元素。需要注意的是,使用迭代器删除元素时必须使用remove()方法,否则程序会抛出异常。