ホームページ > Java > &#&チュートリアル > Java での反復中にコレクションから要素を安全に削除するにはどうすればよいですか?

Java での反復中にコレクションから要素を安全に削除するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-09 13:44:11
オリジナル
536 人が閲覧しました

How to Safely Remove Elements from a Collection During Iteration in Java?

反復中にコレクションから要素を削除する

反復中にコレクションから要素を削除する場合、ConcurrentModificationException を回避する方法を検討することが重要です。 1 つのアプローチは、コレクションのコピーを反復処理して、反復中に変更が発生しないようにすることです。もう 1 つのアプローチは、実際のコレクションからの反復子を使用して、直接の削除操作を可能にすることです。

収集と削除

収集と削除のアプローチでは、すべての要素を見つけて、削除します。削除して別のリストに保存してください。反復後、これらの要素を元のコレクションから削除します。この手法はコレクションに依存せず、あらゆるタイプのコレクションで動作します。

ListIterator の使用

リストを使用する場合、ListIterator は要素をサポートするため、より効率的なオプションを提供します。反復中の削除と追加。このアプローチは、反復中に実際のコレクションを直接変更します。

JDK 8 の機能強化

Java 8 以降のバージョンでは、「removeIf」メソッドとストリーム API により、次の追加オプションが提供されます。要素の削除。 「removeIf」を使用すると、述語に一致する要素を削除できます。一方、ストリームを使用すると、要素をフィルタリングして新しいコレクションに保存し、元のコレクションを置き換えるために使用できます。

サブリストまたはサブセット

並べ替えられたリストの場合、サブリストまたはサブセットを使用すると、連続する要素を効率的に削除できます。サブリストまたはサブセットをクリアすると、元のリストが間接的に変更されます。

考慮事項

最適なアプローチは、特定のシナリオによって異なります。

  • 収集と削除は多用途であり、あらゆる種類のコレクションで動作します。
  • ListIterator は効率的であり、削除と追加の両方をサポートします。
  • 削除をサポートしないイテレータ実装の可能性があるため、イテレータの安全性は低くなります。
  • JDK 8 の機能強化により効率性と柔軟性が提供されますが、特定の Java バージョンが必要です。
  • サブリストまたはサブセットは、並べ替えられたリストから連続する要素を削除する効率的な方法を提供します。

以上がJava での反復中にコレクションから要素を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート