Java中CopyOnWriteArrayList的listIterator()方法
CopyOnWriteArrayList 的 listIterator() 方法返回一个按正确顺序遍历此列表中元素的列表迭代器。该列表迭代器不支持remove、set或add方法。
语法:
public ListIterator listIterator()
参数: 该函数不接受任何参数。
返回值: 该函数返回一个按正确顺序遍历此列表中的元素的列表迭代器。
以下程序说明了上述函数的用法:
程序1:
// Java程序演示了CopyOnWriteArrayList的listIterator()方法
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// 创建CopyOnWriteArrayList对象
CopyOnWriteArrayList<Integer> ArrLis
= new CopyOnWriteArrayList<Integer>();
// 添加元素
ArrLis.add(32);
ArrLis.add(67);
ArrLis.add(67);
ArrLis.add(100);
// 打印CopyOnWriteArrayList
System.out.println("CopyOnWriteArrayList: " + ArrLis);
// 调用listIterator()方法
Iterator iteratorVals = ArrLis.listIterator();
// 使用从CopyOnWriteArrayList创建的迭代器打印元素
System.out.println("CopyOnWriteArrayList的迭代器值为:");
// 使用迭代器输出元素
while (iteratorVals.hasNext()) {
System.out.println(iteratorVals.next());
}
}
}
输出:
CopyOnWriteArrayList: [32, 67, 67, 100]
CopyOnWriteArrayList的迭代器值为:
32
67
67
100
该 listIterator(index) 方法返回一个按正确顺序从特定索引开始遍历此列表中的元素的列表迭代器。该列表迭代器不支持remove、set或add方法。
语法:
public ListIterator listIterator(int index)
参数: 该函数接受一个参数 索引 ,该参数指定要从列表迭代器返回的第一个元素的索引。
返回值: 该函数返回一个按正确顺序从指定索引开始遍历此列表中的元素的列表迭代器。
异常: 如果索引超出范围,则该函数引发 IndexOutOfBoundsException 。
以下程序说明了上述函数的用法:
程序1:
// Java程序,演示CopyOnWriteArrayList
// listIterator()方法在Java中的应用
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// 创建CopyOnWriteArrayList对象
CopyOnWriteArrayList<String> ArrLis
= new CopyOnWriteArrayList<String>();
// 添加元素
ArrLis.add("gopal");
ArrLis.add("gfg");
ArrLis.add("jgec");
ArrLis.add("sudo");
// 打印CopyOnWriteArrayList
System.out.println("CopyOnWriteArrayList: " + ArrLis);
// 从第二个索引位置调用listIterator()方法
Iterator iteratorVals = ArrLis.listIterator(2);
// 打印从CopyOnWriteArrayList创建的迭代器中的元素
System.out.println("The iterator values"
+ " of CopyOnWriteArrayList are:");
// 使用迭代器打印元素
while (iteratorVals.hasNext()) {
System.out.println(iteratorVals.next());
}
}
}
输出:
CopyOnWriteArrayList: [gopal, gfg, jgec, sudo]
The iterator values of CopyOnWriteArrayList are:
jgec
sudo
程序2 :
// Java程序,演示CopyOnWriteArrayList
// listIterator()方法在Java中的应用,出现异常
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// 创建CopyOnWriteArrayList对象
CopyOnWriteArrayList<String> ArrLis
= new CopyOnWriteArrayList<String>();
// 添加元素
ArrLis.add("gopal");
ArrLis.add("gfg");
ArrLis.add("jgec");
ArrLis.add("sudo");
// 打印CopyOnWriteArrayList
System.out.println("CopyOnWriteArrayList: " + ArrLis);
// 从第6个索引位置调用listIterator()方法
// 因此返回异常
Iterator iteratorVals = ArrLis.listIterator(6);
// 打印从CopyOnWriteArrayList创建的迭代器中的元素
System.out.println("The iterator values"
+ " of CopyOnWriteArrayList are:");
// 使用迭代器打印元素
while (iteratorVals.hasNext()) {
System.out.println(iteratorVals.next());
}
}
}
输出:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6
at java.util.concurrent.CopyOnWriteArrayList.listIterator(CopyOnWriteArrayList.java:1107)
at GFG.main(GFG.java:25)
参考资料: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html#listIterator–
极客教程