Java集合的ConcurrentModificationException
程序员文章站
2022-05-14 10:21:29
简单复习一下集合顺带提一下这个错误,其实也比较常见,大多是因为疏忽的原因吧; 我们创建一个集合,添加了一些元素,使用迭代器来遍历,然后遍历途中需要进行一些逻辑操作,对集合进行修改,然后就报错了,这是什么原因呢? 集合是集合,迭代器是迭代器,两个不是同一个东西,可以把迭代器理解为集合的一个快照或副本, ......
简单复习一下集合顺带提一下这个错误,其实也比较常见,大多是因为疏忽的原因吧;
我们创建一个集合,添加了一些元素,使用迭代器来遍历,然后遍历途中需要进行一些逻辑操作,对集合进行修改,然后就报错了,这是什么原因呢?
集合是集合,迭代器是迭代器,两个不是同一个东西,可以把迭代器理解为集合的一个快照或副本,当两者的内容不一致的时候,就抛出 new concurrentmodificationexception();
源码中不难发现:
而上面那两个变量就是判断集合改变而定义的count
public static void main(string[] args) { collection list = new arraylist<>(); list.add("xiaowang"); list.add("dawang"); list.add("laowang"); system.out.println(list.tostring()); iterator iterator = list.iterator(); while (iterator.hasnext()) { string s = (string) iterator.next(); if (s.equals("xiaowang")) { list.add("gebilaowang"); } }
上一篇: 线程安全
下一篇: 详解ToB行业低成本网络推广方案