多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java 中的`ListIterator` > 原文: [https://beginnersbook.com/2014/06/listiterator-in-java-with-examples/](https://beginnersbook.com/2014/06/listiterator-in-java-with-examples/) 在上一个教程中,我们讨论了 Java 中的[迭代器](https://beginnersbook.com/2014/06/java-iterator-with-examples/),我们可以使用它来向前遍历`List`或`Set`。在这里,我们将讨论`ListIterator`,它允许我们在两个方向(向前和向后)遍历列表。 ## `ListIterator`示例 在这个例子中,我们在两个方向上遍历[`ArrayList`](https://beginnersbook.com/2013/12/java-arraylist/) 。 ```java import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ListIteratorExample { public static void main(String a[]){ ListIterator<String> litr = null; List<String> names = new ArrayList<String>(); names.add("Shyam"); names.add("Rajat"); names.add("Paul"); names.add("Tom"); names.add("Kate"); //Obtaining list iterator litr=names.listIterator(); System.out.println("Traversing the list in forward direction:"); while(litr.hasNext()){ System.out.println(litr.next()); } System.out.println("\nTraversing the list in backward direction:"); while(litr.hasPrevious()){ System.out.println(litr.previous()); } } } ``` 输出: ```java Traversing the list in forward direction: Shyam Rajat Paul Tom Kate Traversing the list in backward direction: Kate Tom Paul Rajat Shyam ``` 注意:我们可以使用`Iterator`遍历`List`和`Set`两者但是使用`ListIterator`我们只能遍历`List`。`Iterator`和`ListIterator`之间还有其他一些差异,我们将在下一篇文章中讨论它们。 ### ListIterator 的方法 1)`void add(E e)`:将指定的元素插入列表(可选操作)。 2)`boolean hasNext()`:如果此列表迭代器在向前遍历列表时具有更多元素,则返回`true`。 3)`boolean hasPrevious()`:如果此列表迭代器在反向遍历列表时具有更多元素,则返回`true`。 4)`E next()`:返回列表中的下一个元素并前进光标位置。 5)`int nextIndex()`:返回后续调用`next()`返回的元素的索引。 6)`E previous()`:返回列表中的上一个元素并向后移动光标位置。 7)`int previousIndex()`:返回后续调用`previous()`返回的元素的索引。 8)`void remove()`:从列表中删除`next()`或`previous()`返回的最后一个元素(可选操作)。 9)`void set(E e)`:用指定的元素(可选操作)替换`next()`或`previous()`返回的最后一个元素。 #### 参考: [`ListIterator` javadoc](https://docs.oracle.com/javase/6/docs/api/java/util/ListIterator.html)