SeouliteLab

[Java/자바] 두 개의 Map 합치기 (merge, putAll) 본문

프로그래밍

[Java/자바] 두 개의 Map 합치기 (merge, putAll)

Seoulite Lab 2024. 3. 9. 00:56

Map의 합치기란?

Java의 Map은 키-값 쌍을 저장하는 자료구조로, 두 개의 Map을 합쳐서 하나의 Map으로 만들 수 있습니다. 이를 통해 두 Map의 내용을 통합하거나 결합할 수 있습니다. Map을 합치는 데에는 주로 merge()와 putAll() 메서드가 사용됩니다.

merge() 메서드

merge() 메서드는 지정된 키와 연관된 값이 없거나 null인 경우에만 주어진 값으로 매핑합니다. 그렇지 않으면 주어진 remapping 함수를 사용하여 기존 값과 새 값을 결합합니다.


V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
  • key: 값이 병합될 키
  • value: 키에 매핑될 값
  • remappingFunction: 기존 값과 새 값이 충돌하는 경우 새 값을 생성하는 함수

putAll() 메서드

putAll() 메서드는 지정된 Map의 모든 키-값 매핑을 현재 Map에 추가합니다.

void putAll(Map<? extends K, ? extends V> m)
  • m: 현재 Map에 추가할 매핑을 포함하는 Map

두 개의 Map 합치기 예제

아래는 두 개의 Map을 합치는 예제 코드입니다.


import java.util.HashMap;
import java.util.Map;

public class MergeMapsExample {
    public static void main(String[] args) {
        // 첫 번째 Map
        Map<Integer, String> map1 = new HashMap<>();
        map1.put(1, "one");
        map1.put(2, "two");

        // 두 번째 Map
        Map<Integer, String> map2 = new HashMap<>();
        map2.put(3, "three");
        map2.put(4, "four");

        // merge() 메서드를 사용하여 두 Map 합치기
        map2.forEach((key, value) -> map1.merge(key, value, (v1, v2) -> v1 + ", " + v2));

        // putAll() 메서드를 사용하여 두 Map 합치기
        Map<Integer, String> mergedMap = new HashMap<>(map1);
        mergedMap.putAll(map2);

        System.out.println("Merged Map with merge(): " + map1);
        System.out.println("Merged Map with putAll(): " + mergedMap);
    }
}

추가 예제:

아래는 두 Map을 합치는 다양한 상황을 다루는 예제 코드입니다.


import java.util.HashMap;
import java.util.Map;

public class MoreMergeExamples {
    public static void main(String[] args) {
        // 예제 1: merge() 메서드를 사용하여 중복된 키의 값 병합
        Map<Integer, String> map1 = new HashMap<>();
        map1.put(1, "one");
        map1.put(2, "two");
        Map<Integer, String> map2 = new HashMap<>();
        map2.put(2, "deux");
        map2.put(3, "three");
        map2.forEach((key, value) -> map1.merge(key, value, (v1, v2) -> v1 + ", " + v2));
        System.out.println("Merged Map: " + map1);

        // 예제 2: put

All() 메서드를 사용하여 두 Map 합치기
        Map<Integer, String> map3 = new HashMap<>(map1);
        map3.putAll(map2);
        System.out.println("Merged Map with putAll(): " + map3);
    }
}