ハッシュマップをイテレートしながら削除する方法は何ですか?
HashMapを走査して削除する方法には、以下の様々な方法があります。
- Iteratorを使用して要素を順次削除する。
Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<K, V> entry = iterator.next();
if (需要删除的条件) {
iterator.remove();
}
}
- Java 8以降のバージョンでは、forEachメソッドを使用して削除を繰り返します。
map.entrySet().removeIf(entry -> 需要删除的条件);
- for-eachループを使用して削除を繰り返す(お勧めしません、ループ中に削除するとConcurrentModificationException例外が発生する可能性があります):
for (Map.Entry<K, V> entry : map.entrySet()) {
if (需要删除的条件) {
map.remove(entry.getKey());
}
}
第1および第2の方法が一般的でおすすめです。要素を削除する際には、mapのremoveメソッドを直接使用せずに、反復子またはremoveIfメソッドを使用して要素を削除することで、ConcurrentModificationExceptionの発生を回避してください。