package com.Test01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /* ConcurrentModificationException 當不允許這樣的修改時,可以通過檢測到對象的並發修改的方法來拋出此異常。 */ public class ListDemo { public static void main(String[] args) { //創建集合對象 List<String> list = new ArrayList<String>(); //添加元素 list.add("hello"); list.add("world"); list.add("java"); // 遍歷集合 /* Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = it.next(); if(s.equals("world")) { list.add("javase"); } } */ /* for(int i = 0;i<list.size();i++) { String s = list.get(i); if(s.equals("world")) { list.add("javaee"); } } System.out.println(list); */ ListIterator<String> lit = list.listIterator(); while (lit.hasNext()) { String s = lit.next(); System.out.println(s); } System.out.println("-------------"); while (lit.hasPrevious()) { String s = lit.previous(); System.out.println(s); } } }
運行結果如下:
hello
world
java
-------------
java
world
hello
ListIterator<String> lit = list.listIterator();
while(lit.hasNext()) {
String s = lit.next();
if(s.equals("world")) {
lit.add("javaee");
}
}
System.out.println(list);
使用列表迭代器的add方法不會發生並發異常,因為底層將 實際修改次數賦值給了預期修改次數