Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 ConcurrentHashMap clear() 메서드 완벽 정리 – 저장된 모든 키-값 쌍 한 번에 삭제하기

ConcurrentHashMap의 clear() 메서드는 맵에 저장된 모든 키-값(key-value) 매핑을 제거하는 데 사용됩니다. 이 메서드를 호출하면 해당 ConcurrentHashMap의 모든 요소가 삭제되어 빈 맵이 됩니다.

문법

public void clear()

이 메서드는 매개변수를 받지 않으며, 반환값도 없습니다(void). 실제 동작을 확인할 수 있는 예제를 살펴보겠습니다.

예제

import java.util.concurrent.ConcurrentHashMap;
import java.util.*;
public class Demo{
    public static void main(String[] args){
        Map<String, String> my_map = new ConcurrentHashMap<String, String>();
        my_map.put("This", "35");
        my_map.put("is", "78");
        my_map.put("sample", "99");
        System.out.println("clear 호출 전 맵의 요소 : " + my_map);
        my_map.clear();
        System.out.println("clear 호출 후 맵의 요소 : " + my_map);
    }
}

출력 결과

clear 호출 전 맵의 요소 : {This=35, is=78, sample=99}
clear 호출 후 맵의 요소 : {}

코드 설명

위 예제에서 Demo라는 클래스가 정의되어 있으며, 프로그램 실행의 시작점인 main 함수를 포함하고 있습니다. 먼저 Map 타입의 새 인스턴스를 생성한 뒤, put() 메서드를 사용해 세 개의 키-값 쌍을 추가했습니다.

그다음 맵에 담긴 요소들을 출력하고, clear() 메서드를 호출하여 모든 데이터를 삭제합니다. 삭제 작업이 완료된 후 다시 맵을 출력해 보면 아무것도 남아 있지 않은 빈 맵({})이 출력되는 것을 확인할 수 있습니다.

참고 사항

clear() 메서드는 일반 HashMap과 달리 멀티스레드 환경에서 안전하게 사용할 수 있습니다. ConcurrentHashMap은 내부적으로 세분화된 잠금(lock) 기술을 활용하기 때문에, 여러 스레드가 동시에 접근하는 상황에서도 clear()를 호출하더라도 ConcurrentModificationException이 발생하지 않습니다. 따라서 병렬 처리 환경에서 맵의 전체 내용을 초기화할 때 유용하게 활용됩니다.