SeouliteLab

[Java/자바] Stream으로 중복 데이터 문제 해결하며 List를 Map으로 변환하는 방법 본문

프로그래밍

[Java/자바] Stream으로 중복 데이터 문제 해결하며 List를 Map으로 변환하는 방법

Seoulite Lab 2024. 3. 15. 01:12

Java의 Stream API를 사용하여 List를 Map으로 변환할 때, 중복된 키가 있는 경우 이를 해결하는 방법에 대해 알아보겠습니다. 아래 예제들을 통해 중복 데이터 문제를 효과적으로 해결하는 방법을 살펴보겠습니다.

1. 중복 데이터를 덮어쓰는 방법

중복된 키가 있을 때 가장 최근 값으로 덮어쓰는 방법입니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map map = list.stream()
                                     .collect(Collectors.toMap(item -> item, String::length, (existing, replacement) -> replacement));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=1, B=1}
    }
}

2. 중복 데이터를 무시하는 방법

중복된 키가 있을 때 기존 값을 유지하고 새로운 값을 무시하는 방법입니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map map = list.stream()
                                     .collect(Collectors.toMap(item -> item, String::length, (existing, replacement) -> existing));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=1, B=1}
    }
}

3. 중복 데이터를 합치는 방법

중복된 키가 있을 때 값을 합치는 방법입니다. 이 예제에서는 중복된 값을 더합니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map map = list.stream()
                                     .collect(Collectors.toMap(item -> item, s -> 1, Integer::sum));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=2, B=1}
    }
}

4. 중복 데이터를 병합하는 방법

중복된 키가 있을 때 값을 병합하는 방법입니다. 이 예제에서는 중복된 값을 쉼표로 연결합니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map map = list.stream()
                                     .collect(Collectors.toMap(item -> item, item -> item, (existing, replacement) -> existing + "," + replacement));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=A,A, B=B}
    }
}

5. 중복 데이터를 그룹화하여 처리하는 방법

중복된 키가 있을 때 값을 그룹화하여 처리하는 방법입니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map> map = list.stream()
                                           .collect(Collectors.groupingBy(item -> item));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=[A, A], B=[B]}
    }
}

6. 중복 데이터를 처리하는 커스텀 로직을 사용하는 방법

중복된 키에 대한 처리 로직을 사용자가 직접 지정하여 처리하는 방법입니다.

import java.util.*;
import java.util.stream.*;

public class ListToMapExample {
    public static void main(String[] args) {
        List list = Arrays.asList("A", "B", "A");

        Map map = list.stream()
                                     .collect(Collectors.toMap(item -> item, String::length, (existing, replacement) -> {
                                         if (existing > replacement) {
                                             return existing;
                                         } else {
                                             return replacement;
                                         }
                                     }));

        System.out.println("Map: " + map); // 출력 결과: Map: {A=1, B=1}
    }
}

위 예제들을 통해 Stream을 이 용하여 중복 데이터 문제를 해결하며 List를 Map으로 변환하는 다양한 방법을 살펴보았습니다. 이를 통해 데이터를 보다 효율적으로 관리할 수 있게 됩니다.