📜  Java中的向量 listIterator() 方法及示例

📅  最后修改于: 2022-05-13 01:54:18.590000             🧑  作者: Mango

Java中的向量 listIterator() 方法及示例

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)

此方法用于通过指定起始索引返回列表迭代器。也是双向的和快速失败的。

句法:

public ListIterator listIterator(int index)

参数:参数索引是一个整数类型值,它指定要从列表迭代器返回的第一个元素(通过调用next() )。

返回值:该方法返回一个 ListIterator 对象,该对象可用于遍历 Vector 对象。

异常:此方法抛出IndexOutOfBoundsException ,如果索引超出范围(索引 < 0 或索引 > size())

示例 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:演示 ListIterator 对象在创建列表迭代器后修改 Vector 对象时抛出的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

参考:
https://docs.oracle.com/javase/8/docs/api/java Java