ホームページ  >  記事  >  Java  >  反復中にマップから要素を安全に削除するにはどうすればよいですか?

反復中にマップから要素を安全に削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-17 11:21:02570ブラウズ

How to Safely Remove Elements from a Map While Iterating?

マップの要素の反復と削除: 改善されたソリューション

マップのキーを反復して条件付きで要素を削除しようとすると、 ConcurrentModificationException が発生する可能性があります。これに対処するには、マップのキー セットから新しいコレクションを作成し、それを反復処理することをお勧めします。ただし、このアプローチは非効率的で複雑になる可能性があります。

より効果的な解決策は、Iterator インターフェースのremove() メソッドを使用することです。これにより、マップを反復処理しながらマップを直接変更できます。以下に例を示します。

Map<String, String> map = new HashMap<>();
map.put("test", "test123");
map.put("test2", "test456");

for (Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext(); ) {
    Map.Entry<String, String> entry = it.next();
    if (entry.getKey().equals("test")) {
        it.remove();
    }
}

このコード サンプルは、for ループで Iterator を使用してマップからエントリを削除する方法を示しています。 Remove() メソッドを利用すると、エントリを反復処理しながらマップのコンテンツを効率的に更新できます。このアプローチにより、追加の同期ブロックが不要になり、よりクリーンで効率的なソリューションになります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。