ListIterator 介绍
List集合的遍历方式之一,继承自 Iterator ,所以 Iterator 有的方法 ListIterator 也有。
Iterator 只有remove方法提供删除功能(只能删除,不能添加)。
ListIterator 在Iterator的基础上,又提供了add方法进行添加数据(添加删除都有了)。
知识拓展:
Iterator 的内容看这里:https:
ListIterator 常用方法
boolean hasNext();
E next();
void add(E e);
void remove();
注意:
有两个特殊方法:
* boolean hasPrevious();
* E previous();
1.遍历顺序的不同:
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
2.迭代器刚开始创建成功的时候,指针默认位置是在最前面,此时如果调用previous方法,指针就会向前移动一位,此时已经没有元素了。
3.next方法是将指针往后移,previous方法是将指针往前移。
4.什么情况下才能用previous方法遍历集合,只有指针移到了最后的位置,才能使用previous方法遍历,此时previous会一步一步将指针移回来。
ListIterator 遍历集合
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
String str = listIterator.next();
System.out.println(str);
}
System.out.println(list);
ListIterator 方法细节
1.add方法
* 在next方法前面调用add方法:在当前位置插入元素,原来当前位置上的元素和指针整体向后移动一个位置。
* 在next方法后面调用add方法:在下一个位置插入元素,原来的下一个位置的元素和指针整体向后移动一个位置。
ListIterator MST
Q1:ListIterator怎么从前往后遍历?
A:从前往后遍历直接调用hasNext方法和next方法即可。
* boolean hasNext();
* E next();
Q2:ListIterator怎么从后往前遍历?
A:从后往前遍历需要调用hasPrevious方法和previous方法,功能和hasNext方法和next方法一样,不同的是他是从后往前遍历的。
* boolean hasPrevious();
* E previous();
Q2:列表迭代器和迭代器的区别?
A:迭代器提供了三个方法:
* hasNext
* next
* remove
列表迭代器多提供了一个添加的方法:
* hasNext
* next
* add
* remove
迭代器遍历的时候只能删除,不能添加,没有提供添加的方法;
列表迭代器遍历的时候,即能添加也能删除,提供了添加的方法;
ListIterator 源码
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void add(E e);
void remove();
void set(E e);
}