JAVA/포스팅

자바 스트림의 변환

짜집퍼박사(짜박) 2023. 11. 25. 20:36

Java 스트림에서는 변환 연산을 사용하여 스트림의 요소를 다른 형태로 변환할 수 있습니다. 변환 연산은 스트림의 요소를 매핑하거나 필터링하는 데 사용됩니다. 주요한 변환 연산에는 map, flatMap, filter, distinct, sorted 등이 있습니다.

 

1. map() 변환

map 연산은 각 요소를 특정 함수에 매핑하여 새로운 값을 생성합니다. 예를 들어, 주어진 리스트의 각 숫자를 제곱하여 새로운 리스트를 생성할 수 있습니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> squaredNumbers = numbers.stream()
                                       .map(x -> x * x)
                                       .collect(Collectors.toList());

System.out.println(squaredNumbers); // [1, 4, 9, 16, 25]

 

2. flatMap() 변환

flatMap은 각 요소를 스트림으로 매핑하고 이를 하나의 스트림으로 평탄화합니다. 이는 중첩된 리스트나 맵을 해체하거나 여러 스트림을 하나로 합치는 데 사용됩니다.

List<List<String>> nestedList = Arrays.asList(
        Arrays.asList("apple", "banana"),
        Arrays.asList("orange", "grape"),
        Arrays.asList("watermelon", "kiwi")
);

List<String> flatList = nestedList.stream()
                                 .flatMap(Collection::stream)
                                 .collect(Collectors.toList());

System.out.println(flatList); // [apple, banana, orange, grape, watermelon, kiwi]

 

3. filter() 변환

filter 연산은 주어진 조건을 만족하는 요소만을 포함하는 스트림을 생성합니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> evenNumbers = numbers.stream()
                                   .filter(x -> x % 2 == 0)
                                   .collect(Collectors.toList());

System.out.println(evenNumbers); // [2, 4]

 

4. distinct() 변환

distinct 연산은 중복을 제거한 스트림을 생성합니다.

List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);

List<Integer> distinctNumbers = numbers.stream()
                                       .distinct()
                                       .collect(Collectors.toList());

System.out.println(distinctNumbers); // [1, 2, 3, 4, 5]

 

5. sorted() 변환

sorted 연산은 요소를 정렬한 스트림을 생성합니다.

List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);

List<Integer> sortedNumbers = numbers.stream()
                                     .sorted()
                                     .collect(Collectors.toList());

System.out.println(sortedNumbers); // [1, 1, 2, 3, 4, 5, 5, 6, 9]

이러한 변환 연산을 통해 스트림은 초기 데이터를 다양한 방식으로 가공하고 처리할 수 있습니다. 이는 간결하면서도 강력한 코드를 작성할 수 있게 해줍니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 바이트기반 스트림  (0) 2023.11.25
자바 입출력  (0) 2023.11.25
자바 Collector구현하기  (0) 2023.11.25
자바 collect()  (0) 2023.11.25
자바 스트림의 최종연산  (0) 2023.11.25