어제 오늘 내일

[Java HashMap] replace()와 replaceAll() 메소드 정리 본문

IT/Java

[Java HashMap] replace()와 replaceAll() 메소드 정리

hi.anna 2025. 10. 12. 01:07

HashMap에서는 기존 값을 교체할 때 replace()replaceAll() 메소드를 사용할 수 있습니다.
단순한 값 수정부터 조건부 교체, 일괄 처리까지 다양한 상황에서 활용됩니다.

 

1. replace(K key, V value)

import java.util.HashMap;

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

        Integer oldVal = scores.replace("kim", 95);
        Integer notFound = scores.replace("park", 70);

        System.out.println("oldVal = " + oldVal);     // 90
        System.out.println("notFound = " + notFound); // null
        System.out.println(scores);                   // {kim=95, lee=80}
    }
}

키가 있으면 값을 교체하고 기존 값을 반환합니다. 키가 없으면 null을 반환합니다.

 

2. replace(K key, V oldValue, V newValue)

import java.util.HashMap;

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

        boolean result1 = roles.replace("user1", "guest", "admin"); // 조건 일치 → 교체
        boolean result2 = roles.replace("user1", "guest", "root");  // 조건 불일치 → 실패

        System.out.println(result1); // true
        System.out.println(result2); // false
        System.out.println(roles);   // {user1=admin}
    }
}

기존 값이 특정 값일 때만 교체합니다. 멀티스레드 환경에서 안전하게 교체할 때 유용합니다.
 

3. replaceAll(BiFunction<K, V, V> function)

import java.util.HashMap;

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

        // 모든 점수에 +5 점
        scores.replaceAll((k, v) -> v + 5);

        System.out.println(scores); // {kim=95, lee=85, park=75}
    }
}

모든 요소에 대해 지정된 연산을 적용합니다. 람다식을 사용해 일괄 수정할 수 있어 코드가 깔끔합니다.
 

결론

  • replace(key, value) → 단순 교체 (없으면 null)
  • replace(key, oldVal, newVal) → 조건부 교체 (boolean 반환)
  • replaceAll(function) → 전체 값 일괄 변환
  • 단일 키 수정부터 조건부/일괄 변환까지 다양한 시나리오에서 활용 가능

 
 

반응형
Comments