ConcurrentModificationException.java
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73package cn.itcast.exception; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /** * ConcurrentModificationException: * 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常 * * 产生的原因: * 迭代器是依赖于集合存在的,在判断成功后,集合中新添加了元素,而迭代器却不知道 * * 解决方法: * 集合遍历元素,集合修改元素 * 迭代器遍历元素,迭代器修改元素(普通for循环,增强for循环底层也是用迭代器实现的) * */ public class ConcurrentModificationException { public static void main(String[] args) { List list = new ArrayList(); list.add("hello"); list.add("world"); list.add("java"); //迭代器遍历 ConcurrentModificationException // Iterator it = list.iterator(); // while(it.hasNext()){ // String s = (String)it.next(); // if("world".equals(s)){ // list.add("javaee"); // } // } // ListIterator listIt = list.listIterator(); // while(listIt.hasNext()){ // String ss = (String) listIt.next(); // if("world".equals(ss)){ // listIt.add("javaee"); // } // System.out.println(ss); // } // System.out.println("-----------------"); // System.out.println(list); // Output: // hello // world // java // ----------------- // [hello, world, javaee, java] for(int i=0; i<list.size();i++){ String ss = (String) list.get(i); if(ss.equals("world")){ list.add("javaee"); } System.out.println(ss); } System.out.println("-----------------"); System.out.println(list); // Output: // hello // world // java // javaee // ----------------- // [hello, world, java, javaee] } }
最后
以上就是唠叨皮卡丘最近收集整理的关于集合框架--List ConcurrentModificationException的全部内容,更多相关集合框架--List内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复