Java ListIterator接口是bi-directional iterator ,用于在上previous或next一个方向previous迭代list的元素。
我们可以使用list.listIterator()方法调用获取任何给定列表的列表迭代器的引用。 遵循给定的ListIterator syntax 。
ListIterator listIterator = list.listIterator();
1. Java ListIterator Features
以下是ListIterator in Java提供的功能列表。从Java 1.2开始,可以使用ListIterator。
ListIterator extends Iterator接口。
ListIterator仅适用于List实现的类。
与Iterator不同,ListIterator支持在元素列表上的所有CRUD操作(CREATE,READ,UPDATE和DELETE)。
与Iterator不同,ListIterator是bi-directional 。 它支持正向和反向迭代。
它没有当前元素; 它的光标位置始终位于通过调用previous()返回的元素和通过调用next()返回的元素之间。
2. Java ListIterator Example
让我们从一个简单的ListIterator Java示例开始,遍历ArrayList的元素。 请注意,数组索引以'0'开头。ArrayList list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
ListIterator 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() + ",");
}
Program Output.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 Methodsvoid add(Object o) :将指定的元素插入列表(可选操作)。
boolean hasNext() :如果在向前遍历列表时此列表迭代器包含更多元素,则返回true 。
boolean hasPrevious() :如果在反向遍历列表时此列表迭代器包含更多元素,则返回true 。
Object next() :返回列表中的下一个元素并前进光标位置。
int nextIndex() :返回元素的索引,该元素的索引将由对next()的后续调用返回。
Object previous() :返回列表中的上一个元素,并将光标位置向后移动。
int previousIndex() :返回元素的索引,该元素的索引将由对next()的后续调用返回。
void remove() :从列表中移除next()或previous()返回的最后一个元素(可选操作)。
void set(Object o) :将next()或previous()返回的最后一个元素替换为指定的元素(可选操作)。
4. Conclusion
在本教程中,我们学习了Java ListIterator接口。 我们学习了ListIterator方法和简单示例,以向前和向后迭代列表元素。
References: