📅  最后修改于: 2023-12-03 15:16:30.064000             🧑  作者: Mango
LinkedList是Java集合框架中的一个双向链表实现,它提供了多种方法处理链表中的元素。其中,listIterator()
方法是用来获取一个列表迭代器,可以在列表中双向遍历元素。
ListIterator<E> listIterator()
无参数。
返回一个ListIterator
类型的列表迭代器,用于遍历列表元素。
import java.util.LinkedList;
import java.util.ListIterator;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Java");
list.add("Python");
list.add("C++");
ListIterator<String> iterator = list.listIterator(); // 获取列表迭代器
while (iterator.hasNext()) {
System.out.println(iterator.next()); // 正向遍历列表元素并打印
}
while (iterator.hasPrevious()) {
System.out.println(iterator.previous()); // 反向遍历列表元素并打印
}
}
}
上述代码创建了一个LinkedList
对象list
,并向其中添加了一些元素。通过调用listIterator()
方法获取到列表迭代器iterator
,并使用其hasNext()
和next()
方法正向遍历输出列表元素。然后,再使用hasPrevious()
和previous()
方法反向遍历输出列表元素。
ListIterator
遍历列表时,遵循以下几点:
hasNext()
和next()
方法向后遍历列表元素,或是通过hasPrevious()
和previous()
方法向前遍历列表元素。next()
方法和previous()
方法均返回当前指向的元素,并将指针移动到下一个或前一个元素。add()
方法可以在列表中插入元素,并将指针移到新添加的元素上。remove()
方法可以删除最后一个迭代器返回的元素。set()
方法可以用指定的元素替换最后一个迭代器返回的元素。由于LinkedList
是双向链表,因此在遍历时它使用了一个指针来维护当前位置,因此在迭代器用完之后,它将无法再次使用。
迭代器正向和反向遍历时,将遍历整个列表。所以,遍历时间将与列表长度成线性比例。因此,当列表很大时需要谨慎使用。
LinkedList
列表迭代器listIterator()
方法是用来获取一个列表迭代器,可以在列表中双向遍历元素。使用ListIterator
可以对列表元素进行正向和反向遍历,并执行添加、删除、替换等操作。需要注意的是,使用迭代器遍历列表时,要根据实际需求合理使用,以提高效率。