マップの要素の反復と削除: 改善されたソリューション
マップのキーを反復して条件付きで要素を削除しようとすると、 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 サイトの他の関連記事を参照してください。