反復中にコレクションから要素を削除する
反復中にコレクションから要素を削除する場合、ConcurrentModificationException を回避する方法を検討することが重要です。 1 つのアプローチは、コレクションのコピーを反復処理して、反復中に変更が発生しないようにすることです。もう 1 つのアプローチは、実際のコレクションからの反復子を使用して、直接の削除操作を可能にすることです。
収集と削除
収集と削除のアプローチでは、すべての要素を見つけて、削除します。削除して別のリストに保存してください。反復後、これらの要素を元のコレクションから削除します。この手法はコレクションに依存せず、あらゆるタイプのコレクションで動作します。
ListIterator の使用
リストを使用する場合、ListIterator は要素をサポートするため、より効率的なオプションを提供します。反復中の削除と追加。このアプローチは、反復中に実際のコレクションを直接変更します。
JDK 8 の機能強化
Java 8 以降のバージョンでは、「removeIf」メソッドとストリーム API により、次の追加オプションが提供されます。要素の削除。 「removeIf」を使用すると、述語に一致する要素を削除できます。一方、ストリームを使用すると、要素をフィルタリングして新しいコレクションに保存し、元のコレクションを置き換えるために使用できます。
サブリストまたはサブセット
並べ替えられたリストの場合、サブリストまたはサブセットを使用すると、連続する要素を効率的に削除できます。サブリストまたはサブセットをクリアすると、元のリストが間接的に変更されます。
考慮事項
最適なアプローチは、特定のシナリオによって異なります。
以上がJava での反復中にコレクションから要素を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。