When I was working on a project today, I needed to delete certain elements in List and Set. At that time, I used the method of traversing and deleting while traversing, but the following exception was reported:
ConcurrentModificationException
For Don’t forget it in the future, use a bad pen to record it as follows:
How to write the error code, that is, how to report the above exception:
Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks(); for(CheckWork checkWork : set){ if(checkWork.getState()==1){ set.remove(checkWork); } }
Note: Using the above writing method will report the above ConcurrenModificationException exception. The reason is that the collection cannot be traversed and deleted at the same time.
The correct way to write it is as follows:
1. Traverse and delete List
List<CheckWork> list = this.getUserDao().getAll(); Iterator<CheckWork> chk_it = list.iterator(); while(chk_it.hasNext()){ CheckWork checkWork = chk_it.next(); if(checkWork.getPlanState()==1){ chk_it.remove(); } }
2. Traverse and delete Set
Set<CheckWork> set = this.getUserDao().getAll().get(0).getActionCheckWorks(); Iterator<CheckWork> it = set.iterator(); while(it.hasNext()){ CheckWork checkWork = it.next(); if(checkWork.getState()==1){ it.remove(); } }
The above method (recommended) for looping through and deleting elements in List and Set collections in Java is all the content shared by the editor. I hope it can give you a For reference, I also hope that everyone will support the PHP Chinese website.
For more methods of looping through and deleting elements in List and Set collections in Java (recommended), please pay attention to the PHP Chinese website for related articles!