今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常:

ConcurrentModificationException

为了以后不忘记,使用烂笔头把它记录如下:

错误代码的写法,也就是报出上面异常的写法:

  1. Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks();
  2. for(CheckWork checkWork : set){
  3. if(checkWork.getState()==1){
  4. set.remove(checkWork);
  5. }
  6. }

 注意:使用上面的写法就会报上面的ConcurrenModificationException异常,原因是,集合不可以一边遍历一边删除。

正确的写法如下:

1. 遍历删除List

  1. List<CheckWork> list = this.getUserDao().getAll();
  2. Iterator<CheckWork> chk_it = list.iterator();
  3. while(chk_it.hasNext()){
  4. CheckWork checkWork = chk_it.next();
  5. if(checkWork.getPlanState()==1){
  6. chk_it.remove();
  7. }
  8. }

 2. 遍历删除Set

  1. Set<CheckWork> set =  this.getUserDao().getAll().get(0).getActionCheckWorks();
  2. Iterator<CheckWork> it = set.iterator();
  3. while(it.hasNext()){
  4. CheckWork checkWork = it.next();
  5. if(checkWork.getState()==1){
  6. it.remove();
  7. }
  8. }

Java删除List和Set集合中元素的更多相关文章

  1. List集合中元素排序

    应用场景: 在开发中经常遇到要对List<Object>集合进行排序,并且是根据集合中的对象的某个属性来进行排序    --------以下就此做出的解决方案 public static ...

  2. C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

    C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变 ...

  3. (BUG记录)使用迭代器安全的删除处于循环下集合中的元素

    今日在写一个功能时,需要从MQ拿取数据集合调用对端系统进行批量处理,为了幂等支持,在循环内部如果不满足调用条件就直接从集合中移除. 以上是一个典型的循环集合内删除的场景任务,工作一年第一次遇到这个场景 ...

  4. 对list集合中元素按照某个属性进行排序

    test 为集合中的元素类型(其中包含i属性) Collections.sort(list,(test o1, test o2) -> { if (o1.getI() != o2.getI()) ...

  5. java按照集合中元素的属性进行排序示例代码

    public class Student { private String name; private int age; private int id; public Student() {  sup ...

  6. 关于List集合中元素排序问题

    问题描述: 有一个list集合,其中元素是Student对象,根据student的age排序. Student对象 /** * description * * @author 70KG * @date ...

  7. MT【215】集合中元素个数

    设$M=\{1,2,3\cdots,2010\}$,$A$是$M$的子集且满足条件:当$x\in A$时$15x\notin A$,则$A$中的元素的个数最多是______ 分析:由于$x,15x,( ...

  8. More is better(hdu 1856 计算并查集集合中元素个数最多的集合)

    More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others) ...

  9. c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作

    using System; using System.Collections.Generic; namespace demo { class Program { static void Main(st ...

随机推荐

  1. shell升级完整记录

    [root@localhost bash-4.3.30]# cat Makefile |grep prefix prefix = /usr/local exec_prefix = ${prefix} ...

  2. knnMatch

    先马克下,回头再看:http://blog.csdn.net/zkl99999/article/details/47950425 http://blog.csdn.net/yangtrees/arti ...

  3. JS实现音乐播放器

    JS实现音乐播放器  前  言            最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播 ...

  4. PHP编辑器分享

    Sublime 1 .安装了追踪插件,ctrl+鼠标左键点击PHP函数跳到函数声明的位置. 2.已汉化 链接:http://pan.baidu.com/s/1hs5qonE 密码:b8fw 相关文章: ...

  5. ctrl+c ctrl+d ctrl+z 的区别和使用场景

    三者的区别 Ctrl+C :强制中断程序,程序无论运行哪里都停止. Ctrl+D :发送一个 exit 的信号,退出当前的用户或者是客户端. Ctrl+Z :暂停程序,在进程中维持挂起状态. 引用别人 ...

  6. 高能天气——团队Scrum冲刺阶段-Day 4

    高能天气--团队Scrum冲刺阶段-Day 4 今日完成任务 于欣月:基本实现课程表功能:每一个设置课程表的地方设置一个EditText和一个TextView,根据我们学校的课程情况设置了25个Edi ...

  7. Codeforces.1041F.Ray in the tube(思路)

    题目链接 \(Description\) 有两条平行于\(x\)轴的直线\(A,B\),每条直线上的某些位置有传感器.你需要确定\(A,B\)轴上任意两个整点位置\(x_A,x_B\),使得一条光线沿 ...

  8. 【dfs】BZOJ1703-[Usaco2007 Mar]Ranking the Cows 奶牛排名

    [题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他 ...

  9. 吴恩达-coursera-机器学习-week10

    十七.大规模机器学习(Large Scale Machine Learning) 17.1 大型数据集的学习 17.2 随机梯度下降法 17.3 小批量梯度下降 17.4 随机梯度下降收敛 17.5 ...

  10. 51Nod 1092 回文字符串(LCS + dp)

    51Nod 1092 数据结构暑假作业上出现的一题,学习了一下相关算法之后,找到了oj测试能AC. 1.回文串是一种中心对称的结构,这道题可以转变为求最长回文子序列长度的题目.(子序列:可以不连续) ...