java迭代器 异常_java-迭代器并发修改异常
A:迭代器的并發(fā)修改異常
/*
* 迭代器的并發(fā)修改異常 java.util.ConcurrentModificationException
* 就是在遍歷的過程中,使用了集合方法修改了集合的長(zhǎng)度,不允許的
*/
public class ListDemo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
//對(duì)集合使用迭代器進(jìn)行獲取,獲取時(shí)候判斷集合中是否存在 "abc3"對(duì)象
//如果有,添加一個(gè)元素 "ABC3"
Iterator it = list.iterator();
while(it.hasNext()){
String s = it.next();
//對(duì)獲取出的元素s,進(jìn)行判斷,是不是有"abc3"
if(s.equals("abc3")){
list.add("ABC3");
}
System.out.println(s);
}
}
}
運(yùn)行上述代碼發(fā)生了錯(cuò)誤 java.util.ConcurrentModificationException這是什么原因呢?
在迭代過程中,使用了集合的方法對(duì)元素進(jìn)行操作。
導(dǎo)致迭代器并不知道集合中的變化,容易引發(fā)數(shù)據(jù)的不確定性。
并發(fā)修改異常解決辦法:
在迭代時(shí),不要使用集合的方法操作元素。
或者通過ListIterator迭代器操作元素是可以的,ListIterator的出現(xiàn),解決了使用Iterator迭代過程中可能會(huì)發(fā)生的錯(cuò)誤情況。
總結(jié)
以上是生活随笔為你收集整理的java迭代器 异常_java-迭代器并发修改异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java并发编程实战-第三章-对象的共享
- 下一篇: 创建型模式二:工厂方法模式