어제 오늘 내일

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

IT/Java

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

hi.anna 2025. 10. 17. 01:45

merge()는 Java 8에서 추가된 메소드로, 기존 값과 새 값을 결합하는 데 유용합니다.

특히 누적 연산, 합계 계산, 문자열 연결, 카운팅 패턴에서 깔끔하게 사용할 수 있습니다.

 

1. 기본 사용법

import java.util.HashMap;

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

        scores.merge("kim", 10, (oldVal, newVal) -> oldVal + newVal);
        scores.merge("lee", 80, (oldVal, newVal) -> oldVal + newVal);

        System.out.println(scores); // {kim=100, lee=80}
    }
}
  • 키가 존재하면 remappingFunction을 적용해 값 갱신
  • 키가 없으면 단순히 새 값 삽입

 

2. 문자열 결합 예제

import java.util.HashMap;

public class HashMapMergeString {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("msg", "Hello");

        map.merge("msg", " World", (oldVal, newVal) -> oldVal + newVal);
        map.merge("greet", "Hi", (oldVal, newVal) -> oldVal + newVal);

        System.out.println(map); // {msg=Hello World, greet=Hi}
    }
}

기존 값과 새 값을 합쳐 문자열을 이어붙일 수 있습니다.

 

 

3. 활용 예제: 단어 빈도수 세기

import java.util.*;

public class HashMapMergeWordCount {
    public static void main(String[] args) {
        String text = "apple banana apple cherry banana apple";
        String[] words = text.split(" ");

        Map<String, Integer> freq = new HashMap<>();
        for (String word : words) {
            freq.merge(word, 1, (oldVal, newVal) -> oldVal + newVal);
        }

        System.out.println(freq); // {banana=2, cherry=1, apple=3}
    }
}

merge()를 쓰면 if문이나 null 체크 없이 간결하게 카운팅이 가능합니다.

 

 

4. 값 제거도 가능

import java.util.HashMap;

public class HashMapMergeRemove {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("x", 5);

        map.merge("x", 1, (oldVal, newVal) -> null); // null 리턴 시 해당 키 제거

        System.out.println(map); // {}
    }
}

remappingFunction이 null을 반환하면 키가 삭제됩니다.

 

 

결론

  • merge(key, value, remappingFunction)
  • 키 없으면 값 삽입, 키 있으면 함수 적용
  • 카운팅, 합계, 문자열 연결, 조건부 삭제 등에 적합
  • compute() 계열보다 더 직관적으로 누적 연산을 처리할 수 있음

 

 

반응형
Comments