ハッシュマップをイテレートしながら削除する方法は何ですか?

HashMapを走査して削除する方法には、以下の様々な方法があります。

  1. Iteratorを使用して要素を順次削除する。
Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<K, V> entry = iterator.next();
    if (需要删除的条件) {
        iterator.remove();
    }
}
  1. Java 8以降のバージョンでは、forEachメソッドを使用して削除を繰り返します。
map.entrySet().removeIf(entry -> 需要删除的条件);
  1. for-eachループを使用して削除を繰り返す(お勧めしません、ループ中に削除するとConcurrentModificationException例外が発生する可能性があります):
for (Map.Entry<K, V> entry : map.entrySet()) {
    if (需要删除的条件) {
        map.remove(entry.getKey());
    }
}

第1および第2の方法が一般的でおすすめです。要素を削除する際には、mapのremoveメソッドを直接使用せずに、反復子またはremoveIfメソッドを使用して要素を削除することで、ConcurrentModificationExceptionの発生を回避してください。

bannerAds