ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Java `ListIterator`接口 > 原文: [https://howtodoinjava.com/java/collections/java-listiterator/](https://howtodoinjava.com/java/collections/java-listiterator/) Java `ListIterator`接口是**双向迭代器**,用于在*向前*或*向后*的任一方向上对[列表](https://howtodoinjava.com/java-arraylist/)的元素进行迭代。 我们可以使用`list.listIterator()`方法调用来获取任何给定列表的列表迭代器的引用。 遵循给定的`ListIterator`语法。 ```java ListIterator<T> listIterator = list.listIterator(); ``` ## 1\. Java `ListIterator`特性 以下是 Java 中`ListIterator`提供的特性列表。 1. 从 Java 1.2 开始,可以使用`ListIterator`。 2. `ListIterator`扩展了`Iterator`接口。 3. `ListIterator`仅适用于`List`实现的类。 4. 与`Iterator`不同,`ListIterator`支持在元素列表上的所有 CRUD 操作(创建,读取,更新和删除啊)。 5. 与`Iterator`不同,`ListIterator`是**双向**。 它支持正向和反向迭代。 6. 它没有当前元素; 它的光标位置始终位于通过调用`previous()`返回的元素和通过调用`next()`返回的元素之间。 ## 2\. Java `ListIterator`示例 让我们从一个简单的`ListIterator` Java 示例开始,遍历`ArrayList`的元素。 请注意,数组索引以`'0'`开头。 ```java ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); list.add("F"); ListIterator<String> listIterator = list.listIterator(); System.out.println("Forward iteration"); //Forward iterator while(listIterator.hasNext()) { System.out.print(listIterator.next() + ","); } System.out.println("Backward iteration"); //Backward iterator while(listIterator.hasPrevious()) { System.out.print(listIterator.previous() + ","); } System.out.println("Iteration from specified position"); //Start iterating from index 2 listIterator = list.listIterator(2); while(listIterator.hasNext()) { System.out.print(listIterator.next() + ","); } ``` 程序输出。 ```java Forward iteration A,B,C,D,E,F, Backward iteration F,E,D,C,B,A, Iteration from specified position C,D,E,F, ``` ## 3\. Java `ListIterator`方法 1. **`void add(Object o)`**:将指定的元素插入列表(可选操作)。 2. **`boolean hasNext()`**:如果在向前遍历列表时此列表迭代器包含更多元素,则返回`true`。 3. **`boolean hasPrevious()`**:如果在反向遍历列表时此列表迭代器包含更多元素,则返回`true`。 4. **`Object next()`**:返回列表中的下一个元素并前进光标位置。 5. **`int nextIndex()`**:返回元素的索引,该元素的索引将由对`next()`的后续调用返回。 6. **`Object previous()`**:返回列表中的上一个元素,并将光标位置向后移动。 7. **`int previousIndex()`**:返回元素的索引,该元素的索引将由对`next()`的后续调用返回。 8. **`void remove()`**:从列表中移除`next()`或`previous()`返回的最后一个元素(可选操作)。 9. **`void set(Object o)`**:将`next()`或`previous()`返回的最后一个元素替换为指定的元素(可选操作)。 ## 4。总结 在本教程中,我们学习了 Java `ListIterator`接口。 我们学习了`ListIterator`方法和简单示例,以向前和向后迭代列表元素。 将我的问题放在评论部分。 学习愉快! 参考文献: [`ListIterator`接口 Java 文档](https://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html)