> Java > java지도 시간 > 본문

반복하는 동안 HashMap에서 요소를 안전하게 제거하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-17 08:11:03
원래의
824명이 탐색했습니다.

How to Safely Remove Elements from a HashMap while Iterating?

반복 및 제거 중 동시 수정 예외

동시 수정(예: 요소 제거)을 수행하는 동안 HashMap을 반복할 때 ConcurrentModificationException이 발생할 수 있습니다. 발생하다. 이는 맵에 대한 반복자의 내부 참조가 수정으로 인해 무효화되기 때문입니다.

ArrayList를 사용한 초기 솔루션

이 예외를 방지하는 일반적인 접근 방식 중 하나는 복사본을 생성하는 것입니다. new ArrayList<>(map.keySet())를 사용하여 지도의 키 세트를 가져옵니다. 그러나 이 접근 방식은 불필요한 키 복사본을 생성하므로 비효율적일 수 있습니다.

제거를 위해 반복자 사용

더 효율적인 솔루션은 맵 항목을 반복하는 것입니다. 반복자를 사용하면 요소를 안전하게 제거할 수 있습니다. 지도의 EntrySet() 메소드는 각각 getKey() 및 getValue() 메소드를 포함하는 항목 세트를 반환합니다.

예제 코드:

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();
    }
}
로그인 후 복사

이 예에서는 지도 항목을 반복하고 "테스트" 키를 안전하게 제거합니다. 반복자는 지도의 내부 구조에 필요한 수정 사항을 처리하여 ConcurrentModificationException을 방지합니다.

위 내용은 반복하는 동안 HashMap에서 요소를 안전하게 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿