并发修改异常java.util.ConcurrentModificationException

java.util.ConcurrentModificationException并发修改异常

并发修改异常

高手可以绕行,该错误比较低级,主要原因是遍历时又动态对集合进行修改操作,直接调用集合中方法均是错误的做法,正确的做法是使用interator迭代器去进行增删改。
在集合操作中如果使用迭代器去遍历集合中的元素经常会遇到并发修改异常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);

日常笔记,继续保持!!

你可能感兴趣的:(javase学习讲义)