java – 从CopyOnWriteArrayList中删除元素

当我尝试使用迭代器从copyOnWriteArrayList中删除元素时,我收到异常.
我注意到这是有记载的

Element-changing operations on iterators themselves (remove,set,and add) are not supported. These methods throw UnsupportedOperationException.

(从http://download.oracle.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html)

现在,令人惊讶的是,我可以用foreach进行迭代,并使用remove()函数.但是当我尝试使用for循环从列表中删除一个项目时,我会得到一个着名的错误 – 你跳过删除的元素旁边的元素.
那么有什么建议吗

解决方法

迭代集合,选择要删除的所有元素,并将其放在临时集合中.完成迭代后,使用removeAll方法从原始集合中删除所有找到的元素.

这会为你工作吗?我的意思是,不知道删除逻辑是否比您的算法更复杂.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...