1. 程式人生 > >關於集合越界後 不能使用叠代器遍歷的處理方式

關於集合越界後 不能使用叠代器遍歷的處理方式

void 是否 cat 一個 修改 異常解決 集合 public 允許

叠代器的並發修改異常
叠代器的並發修改異常 java.util.ConcurrentModificationException
就是在遍歷的過程中,使用了集合方法修改了集合的長度,不允許的

原因
運行上述代碼發生了錯誤 java.util.ConcurrentModificationException這是什麽原因呢?
在叠代過程中,使用了集合的方法對元素進行操作。
導致叠代器並不知道集合中的變化,容易引發數據的不確定性。

並發修改異常解決辦法:
在叠代時,不要使用集合的方法操作元素。
或者通過ListIterator叠代器操作元素是可以的,ListIterator的出現,解決了使用Iterator叠代過程中可能會發生的錯誤情況。代碼如下。

public class Demo3_List {

/**
** A:案例演示
* 需求:我有一個集合,請問,我想判斷裏面有沒有"world"這個元素,如果有,我就添加一個"javaee"元素,請寫代碼實現。
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add("a"); //Object obj = new String();
list.add("b");
list.add("world");
list.add("c");
list.add("d");
list.add("e");

/*Iterator it = list.iterator(); //獲取叠代器
while(it.hasNext()) { //判斷集合中是否有元素
String str = (String)it.next(); //向下轉型
if("world".equals(str)) {
list.add("javaee"); //遍歷的同時在增加元素,並發修改ConcurrentModificationException
}
}*/

ListIterator lit = list.listIterator(); //獲取叠代器(List集合特有的)
while(lit.hasNext()) {
String str = (String)lit.next(); //向下轉型
if("world".equals(str)) {
//list.add("javaee"); //遍歷的同時在增加元素,並發修改ConcurrentModificationException
lit.add("javaee");
}
}

System.out.println(list);
}

}

關於集合越界後 不能使用叠代器遍歷的處理方式