Java では、マップを反復し、反復中にエントリを削除すると、ConcurrentModificationException がスローされる可能性があります。この例外を回避するための一般的な解決策の 1 つは、キー セットを ArrayList などの新しいデータ構造にコピーし、代わりにそれを反復処理することです。
もう 1 つのアプローチは、エントリに対して iterator() メソッドを使用することです。マップのセット。このメソッドによって返される Iterator を使用してエントリを反復処理でき、その Remove() メソッドを使用してマップからエントリを削除できます。
このアプローチの使用方法の例を次に示します。
Map<String, String> map = new HashMap<String, String>() { { put("test", "test123"); 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(); } }
このアプローチは、キー セットを新しいデータ構造にコピーするよりも推奨されます。これは、より効率的であり、新しいオブジェクトの作成が必要ないためです。
以上が反復中に Java マップからエントリを安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。