Java ArrayList.listIterator() 方法及代码示例
获取当前列表中元素的列表迭代器(按适当的顺序).
定义
public ListIterator<E> listIterator()
或
public ListIterator<E> listIterator(int index)
参数
参数类型 | 参数名称 | 参数描述 |
---|---|---|
int | index | 列表迭代器要返回的第一个元素的索引(使用next()方法时) |
类型参数 | E | 数组列表的元素类型 |
抛出的异常
IndexOutOfBoundsException
index 超出索引范围(index 小于 0 或 index 大于等于 size())
说明
本方法由 List<E>
接口的 listIterator()
方法指派
重写了继承自 AbstractList<E>
类的 listIterator()
方法
注意事项
本方法返回的迭代器是快速失败(fast-fail)的: 如果在创建迭代器后的任何时间以任何方式修改列表的结构, 都必须通过迭代器自己的 remove 或 add 方法, 否则迭代器将抛出 ConcurrentModificationException
. 因此, 面对并发修改, 迭代器能够快速而干净地失败, 而不是在未来不确定的时间冒着任意、非确定性行为的风险.
示例
通过数组列表获取列表迭代器
package com.yi21.arraylist; import java.util.ArrayList; import java.util.ListIterator; public class Yi21ArraysListListIterator { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Hello"); list.add("World"); ListIterator<String> iterator = list.listIterator(1); System.out.println("列表元素个数: " + list.size()); //列表迭代器可以添加元素, 但是会影响到源 也就是数组列表 iterator.add("21yi"); System.out.println("迭代器添加元素后, 列表元素个数: " + list.size()); 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()); } } }
执行结果为 :
列表元素个数: 2 迭代器添加元素后, 列表元素个数: 3 正向迭代 World 反向迭代 World 21yi Hello 正向迭代 Hello 21yi World