ホームページ >Java >&#&チュートリアル >Java で List および Set コレクションの要素をループして削除する方法 (推奨)
今日プロジェクトに取り組んでいたとき、ListとSetの特定の要素を削除する必要があり、トラバースして削除しながらトラバースする方法を使用しましたが、次の例外が報告されました:
ConcurrentModificationException
将来的には、悪いペンを使用して記録しました。
エラーコードの書き方、つまり、上記の例外を報告する方法:
Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks(); for(CheckWork checkWork : set){ if(checkWork.getState()==1){ set.remove(checkWork); } }
注: 上記を使用します。書き込みメソッドは上記の ConcurrenModificationException 例外を報告します。その理由は、コレクションの走査と削除を同時に行うことができないためです。
正しい書き方は以下の通りです:
1. 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. 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(); } }
を走査して削除します
上記の要素をループして削除する方法Java のリストとセットのコレクション (推奨) はエディターによって共有されるすべてのコンテンツです。参考にしていただければ幸いです。また、PHP 中国語 Web サイトもサポートしていただければ幸いです。
Java で List および Set コレクションの要素をループおよび削除するその他の方法 (推奨) については、PHP 中国語 Web サイトの関連記事に注目してください。