SeouliteLab

[Java/자바] 반복문 안에서 HashMap 요소 삭제하기 본문

카테고리 없음

[Java/자바] 반복문 안에서 HashMap 요소 삭제하기

Seoulite Lab 2024. 3. 7. 09:14

Java의 HashMap 클래스는 키-값 쌍을 저장하고 관리하는 데 사용됩니다. 때로는 HashMap을 반복하면서 특정 조건에 맞는 요소를 삭제해야 할 수 있습니다. 이 블로그 게시물에서는 Java에서 반복문 안에서 HashMap 요소를 삭제하는 여러 가지 방법을 알아보겠습니다.

예제 1: 반복문 밖에서 요소 삭제

import java.util.HashMap;

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
map.put("orange", 30);

HashMap<String, Integer> toRemove = new HashMap<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    if (entry.getValue() > 20) {
        toRemove.put(entry.getKey(), entry.getValue());
    }
}

map.keySet().removeAll(toRemove.keySet());
System.out.println(map);

위 예제는 반복문 안에서 요소를 직접 삭제하지 않고, 삭제할 요소를 임시 HashMap에 추가한 후, 반복문이 완료된 후에 한 번에 삭제하는 방법을 보여줍니다.

예제 2: Iterator를 사용하여 반복문 안에서 요소 삭제

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
map.put("orange", 30);

Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, Integer> entry = iterator.next();
    if (entry.getValue() > 20) {
        iterator.remove();
    }
}

System.out.println(map);

위 예제는 Iterator를 사용하여 반복문 안에서 직접 요소를 삭제하는 방법을 보여줍니다. Iterator를 사용하면 ConcurrentModificationException을 방지할 수 있습니다.