List.listIterator()

获取当前列表中元素的列表迭代器(按适当的顺序).

定义

public ListIterator<E> listIterator()

public ListIterator<E> listIterator​(int index)

参数

参数类型参数名称参数描述
intindex列表迭代器要返回的第一个元素的索引(使用next()方法时)
类型参数E列表的元素类型

抛出的异常

IndexOutOfBoundsException index 超出索引范围(index 小于 0 或 index 大于等于 size())

说明

index 参数影响的是列表迭代器的起始位置, 迭代器中的元素组成以及顺序并不会被影响.

列表迭代器与一般迭代器重要区别在于, 列表迭代器能够通过 previous() 方法逆向迭代.

示例

通过列表获取列表迭代器

package com.yi21.list;

import java.util.List;
import java.util.ListIterator;

public class Yi21ListListIterator {

    public static void main(String[] args) {
        
        System.out.println("不带 index 参数:");
        List<String> list = List.of("Hello", "World");
        ListIterator<String> iterator = list.listIterator();
        iterate(iterator);
        System.out.println("-".repeat(20));
        System.out.println("带 index 参数:");
        iterator = list.listIterator(1);
        iterate(iterator);

    }

    private static void iterate(ListIterator<String> iterator) {
        System.out.println("正向迭代");
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        //列表迭代器可以反向迭代
        System.out.println("反向迭代");
        while(iterator.hasPrevious()) {
            System.out.println(iterator.previous());
        }
        System.out.println("正向迭代");
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    }

}

执行结果为 :

不带 index 参数:
正向迭代
Hello
World
反向迭代
World
Hello
正向迭代
Hello
World
--------------------
带 index 参数:
正向迭代
World
反向迭代
World
Hello
正向迭代
Hello
World