Java ListIterator 接口

ListIterator 接口定义了列表集合的迭代器,可以前后两个方向迭代,并可以在迭代过程中修改列表数据。在本教程中,我们将通过示例了解 Java ListIterator 接口。

在本教程中,我们将通过示例了解 Java ListIterator 接口。

Java 集合框架的 ListIterator 接口定义了列表集合的迭代器,适用于迭代列表对象,可以前后两个方向迭代列表元素,并可以在迭代过程中修改列表数据。

它扩展了 Iterator 接口。

ListIterator 接口扩展了 Java Iterator 接口。

List 接口提供了 listIterator() 方法用于返回 ListIterator 的实例对象。

ListIterator 的方法

ListIterator 接口提供了遍历列表元素的各种方法。

  • hasNext() - 如果列表中存在元素,则返回 true
  • next() - 返回列表的下一个元素
  • nextIndex() 返回 next() 方法将返回的元素的索引
  • previous() - 返回列表的前一个元素
  • previousIndex() - 返回 previous() 方法将返回的元素的索引
  • remove() - 删除由 next()previous() 返回的元素
  • set() - 用指定元素替换 next() 或返回的 previous() 元素

示例 1:ListIterator 正向遍历

在下面的示例中,我们使用 ListIteratornext() , nextIndex()hasNext() 方法正向遍历 ArrayList 对象。

import java.util.ArrayList;
import java.util.ListIterator;

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);

    // 返回 numbers 的迭代器
    ListIterator<Integer> iterate = numbers.listIterator();

    // 使用 next() 方法
    int number1 = iterate.next();
    System.out.println("下一个元素: " + number1);

    // 使用 nextIndex() 方法
    int index1 = iterate.nextIndex();
    System.out.println("下一个元素的索引: " + index1);number1 = iterate.next();
    System.out.println("下一个元素: " + number1);

    // 使用 hasNext() 方法
    System.out.println("还有下一个元素吗? " + iterate.hasNext());
  }
}

输出

ArrayList: [1, 3, 2]
下一个元素: 1
下一个元素的索引: 1
还有下一个元素吗? true

示例 2:ListIterator 反向遍历

在下面的示例中,我们使用 ListIteratorprevious()previousIndex() 方法反向遍历 ArrayList 对象。

import java.util.ArrayList;
import java.util.ListIterator;

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);

    // 返回 numbers 的迭代器
    ListIterator<Integer> iterate = numbers.listIterator();
    iterate.next();
    iterate.next();

    // 使用 previous() 方法
    int number1 = iterate.previous();
    System.out.println("上一个元素: " + number1);

    // Using the previousIndex()
    int index1 = iterate.previousIndex();
    System.out.println("上一个元素的索引: " + index1);
  }
}

输出

ArrayList: [1, 3, 2]
上一个元素: 3
上一个元素的索引: 0

在上面的例子中,ListIterator 对象最早的位置在 1 之前。由于 1 之前没有元素,如果调用 previous() 方法会抛出异常。

然后我们调用 next() 方法 2 次,现在 ListIterator 对象的位置介于元素 32 之间。

然后,调用 previous() 方法返回 3