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, the reason is that the collection cannot be deleted while traversing.
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(); } }
In the above article, java loops to delete List And the method of setting elements in the collection (recommended) is all the content shared by the editor. I hope it can give you a reference, and I also hope that everyone will pay more attention to the PHP Chinese website.
For more related articles on methods of looping through and deleting elements in List and Set collections in Java, please pay attention to the PHP Chinese website!