Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] Stream으로 중복 데이터 문제 해결하며 List를 Map으로 변환하는 방법 본문
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으로 변환하는 다양한 방법을 살펴보았습니다. 이를 통해 데이터를 보다 효율적으로 관리할 수 있게 됩니다.
'프로그래밍' 카테고리의 다른 글
[Java/자바] Jackson 라이브러리를 활용한 Java에서의 JSON 처리 방법 (0) | 2024.03.15 |
---|---|
[Java/자바] Stream으로 데이터 정렬하여 LinkedHashMap에 저장하기 (0) | 2024.03.15 |
[Java/자바] Stream을 이용하여 List를 Map으로 변환하는 방법 (0) | 2024.03.15 |
[Java/자바] List를 Map으로 변환하는 방법 (0) | 2024.03.15 |
[Java/자바] Interface: 인터페이스란? (0) | 2024.03.14 |