어제 오늘 내일

[Java HashMap] remove() 메소드 정리 및 활용 본문

IT/Java

[Java HashMap] remove() 메소드 정리 및 활용

hi.anna 2025. 10. 11. 09:06

HashMapremove() 메소드는 특정 키를 삭제할 때 사용합니다.

Java 8부터는 조건부 삭제 기능도 제공되어 더욱 유용합니다.
 

1. 기본 remove(Object key)

import java.util.HashMap;

public class HashMapRemoveBasic {
    public static void main(String[] args) {
        HashMap<String, Integer> scores = new HashMap<>();
        scores.put("kim", 90);
        scores.put("lee", 80);

        Integer removed = scores.remove("kim");

        System.out.println("삭제된 값 = " + removed); // 90
        System.out.println(scores);                  // {lee=80}
    }
}

존재하는 키를 삭제하면 삭제된 값을 반환하고, 없으면 null을 반환합니다.

 
 

2. 조건부 remove(Object key, Object value)

import java.util.HashMap;

public class HashMapRemoveConditional {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("user1", "admin");
        map.put("user2", "guest");

        boolean result1 = map.remove("user1", "admin"); // 조건 일치 → 삭제
        boolean result2 = map.remove("user2", "admin"); // 조건 불일치 → 삭제 실패

        System.out.println(result1); // true
        System.out.println(result2); // false
        System.out.println(map);     // {user2=guest}
    }
}

키와 값이 모두 일치할 때만 삭제됩니다. 멀티스레드 환경에서 안전하게 조건 삭제할 때 유용합니다.
 
 

3. 활용 예제: 캐시 무효화

import java.util.*;

public class HashMapRemoveCache {
    public static void main(String[] args) {
        Map<String, String> cache = new HashMap<>();
        cache.put("session1", "active");
        cache.put("session2", "expired");

        // 조건부 삭제: 세션 상태가 expired인 경우만 제거
        cache.remove("session2", "expired");

        System.out.println(cache); // {session1=active}
    }
}

조건부 삭제를 이용하면 원하는 상태일 때만 안전하게 데이터를 제거할 수 있습니다.
 
 

결론

  • remove(key) → 키만 기준으로 삭제, 삭제된 값 반환
  • remove(key, value) → 키와 값이 모두 일치해야 삭제, 성공 여부(boolean) 반환
  • 조건부 삭제는 동시성 문제나 캐시 무효화 같은 시나리오에서 유용

 
 

반응형
Comments