先看一段代码
public class MyListIterator {
public static void main(String[] args) {
String [] books = {"java","html","js","css"};
List list = new ArrayList();
for (String s: books) {
list.add(s);
}
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
System.out.println(listIterator.next());
// 这不能用 list 会报错
list.add("------------分割线---------------");
}
System.out.println("======================开始反向迭代====================");
while(listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
}
}
这里想在遍历 list 集合时增加元素,这样是不对的。将跑出如下异常。
这是由于在 Iterator 迭代时 修改了 集合 list 触发了 Iterator 快速失败机制。
然而我们还想在迭代的时候修改集合,这时候可以使用 ListIterator j接口提供的
void add(E e);方法
public class MyListIterator {
public static void main(String[] args) {
String [] books = {"java","html","js","css"};
List list = new ArrayList();
for (String s: books) {
list.add(s);
}
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
System.out.println(listIterator.next());
// 这不能用 list 会报错
listIterator.add("------------分割线---------------");
}
System.out.println("======================开始反向迭代====================");
while(listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
}
}