java.util.ConcurrentModificationException併發修改異常
併發修改異常
在集合操作中如果使用迭代器去遍歷集合中的元素經常會遇到併發修改異常java.util.ConcurrentModificationException
引發這個問題的主要原因是,迭代器在遍歷查詢集合元素時,元素又動態添加了
錯誤代碼
需求是如果集合中含有c的元素那麼就添加e的元素
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals("c")) {
list.add("e");
}
}
System.out.println(list);
一運行就會報java.util.ConcurrentModificationException的異常
修改後代碼
思路,如果有添加的元素那麼就使用迭代器的添加方法,不能使用集合直接添加
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
if (iterator.next().equals("c")) {
iterator.add("e");
}
}
System.out.println(list);
日常筆記,繼續保持!!