ListItetator
1.迭代器指向的位置
迭代器指向的位置是在元素之前的
图片来自https://blog.csdn.net/longshengguoji/article/details/41551491
集合List由四个元素List1、List2、List3和List4组成,当使用语句Iterator iter = List.Iterator()时,迭代器iter指向的位置是上图中Iterator1指向的位置,当执行语句it.next()之后,迭代器指向的位置后移到上图Iterator2所指向的位置。
2.常用方法
add(E e);将指定元素e插入列表,插入位置为迭代器当前位置之前
hasNext();正向遍历,如果迭代器后面还有元素返回true,否则返回false
hasPrevious();逆向遍历列表,如果迭代器之前还有元素则返回true,否则false
next();返回listIterator所指位置之后元素
nextIndex();返回listIterator所指位置之后元素的索引
previous();
previousIndex();
remove();删除迭代器下一个要访问的元素(next/previou)
set(E e);将列表中当前元素设成e
3.一个小注意点:迭代器是“一次性的”
4.用例
import java.util.LinkedList;
import java.util.ListIterator;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> list=new LinkedList<String>();
list.add("Diana");
list.add("Harry");
list.add("Romeo");
list.add("Tom");
ListIterator<String> iter=list.listIterator();
while(iter.hasNext())
{
String str=iter.next();
if(str.equals("Harry")) {
iter.add("Juliet");
iter.add("Nina");
}}
list.removeLast();
for(String s:list) {
System.out.println(s);
}
System.out.println("list before:"+list);
ListIterator<String> iter1=list.listIterator();//这里新建了新的iter1,不可以再继续使用iter
while(iter1.hasNext()) {
String s1=iter1.next();
if(s1.length()<5)
list.remove("Nina");
}
System.out.println("list after:"+list);
}
}