java.util.Vector.listIterator()
此方法以正确的顺序在Vector对象的元素上返回列表迭代器。它是双向的,因此可以分别使用next()和previous()进行正向和反向遍历。这样返回的迭代器是fail-fast。这意味着在创建迭代器之后,以任何方式对向量进行结构修改,除非通过迭代器自己的remove或add方法(例如,使用Vector.add()),都会导致迭代器抛出ConcurrentModificationException。
用法:
public ListIterator listIterator()
参数:此方法不接受任何输入参数。
返回值:此方法返回一个ListIterator对象,该对象可用于遍历Vector对象。
示例1:为了演示使用listIterator()的前后遍历。
// Java code to illustrate listIterator()
import java.util.Vector;
import java.util.ListIterator;
public class GFG {
public static void main(String[] args)
{
// Declare empty vector
Vector vt = new Vector();
vt.add("Geeks");
vt.add("for");
vt.add("Geeks");
vt.add("2019");
vt.add("AComputerSciencePortalForGeeks");
// Declare list iterator
ListIterator listItr = vt.listIterator();
// Forward iterations
System.out.println("Forward Traversal:");
while (listItr.hasNext()) {
System.out.println(listItr.next());
}
// Backward iterations
System.out.println("\nBackward Traversal:");
while (listItr.hasPrevious()) {
System.out.println(listItr.previous());
}
}
}
输出:
Forward Traversal:
Geeks
for
Geeks
2019
AComputerSciencePortalForGeeks
Backward Traversal:
AComputerSciencePortalForGeeks
2019
Geeks
for
Geeks
java.util.Vector.listIterator(int index)
此方法用于通过指定起始索引来返回列表迭代器。以及双向和fail-fast。
用法:
public ListIterator listIterator(int index)
参数:参数index是一个整数类型值,它指定要从列表迭代器返回的第一个元素(通过调用next())。
返回值:此方法返回一个ListIterator对象,该对象可用于遍历Vector对象。
异常:如果索引超出范围(索引size()),则此方法引发IndexOutOfBoundsException。
示例2:演示listIterator(int index)。
// Java code to illustrate listIterator(int index)
import java.util.Vector;
import java.util.ListIterator;
public class GFG {
public static void main(String[] args)
{
// Declare empty vector
Vector vt = new Vector();
vt.add("Geeks");
vt.add("for");
vt.add("Geeks");
// Declare list iterator
ListIterator listItr = vt.listIterator(1);
// traversal
while (listItr.hasNext()) {
System.out.println(listItr.next());
}
}
}
输出:
for
Geeks
示例3:演示listIterator(int index)引发的IndexOutOfBoundsException。
// Java code to illustrate IndexOutOfBoundsException
// thrown by listIterator(int index)
import java.util.Vector;
import java.util.ListIterator;
public class GFG {
public static void main(String[] args)
{
// Declare empty vector
Vector vt
= new Vector();
vt.add("Geeks");
vt.add("for");
vt.add("Geeks");
// Declare list iterator at starting
// index greater than vector size
try {
ListIterator listItr
= vt.listIterator(5);
}
catch (IndexOutOfBoundsException e) {
// Exception handling
System.out.println("Exception: " + e);
}
}
}
输出:
Exception: java.lang.IndexOutOfBoundsException: Index: 5
示例4:演示在创建Vector迭代器之后修改Vector对象时ListIterator对象引发的ConcurrentModificationException。
// Java code to illustrate ConcurrentModificationException
// thrown by ListIterator object
import java.util.ConcurrentModificationException;
import java.util.Vector;
import java.util.ListIterator;
public class GFG {
public static void main(String[] args)
{
// Declare empty vector
Vector vt = new Vector();
vt.add("Geeks");
vt.add("for");
// Declare list iterator
ListIterator listItr = vt.listIterator();
// modify vector after creating list iterator
vt.add("Geeks");
try {
// Exception thrown here
System.out.println(listItr.next());
}
catch (ConcurrentModificationException e) {
// Exception handling
System.out.println("Exception: " + e);
}
}
}
输出:
Exception: java.util.ConcurrentModificationException