collect(Collectors.toList())

CosmoNumb·2024년 8월 1일
0

java

목록 보기
13/24

collect(Collectors.toList())는 자바 스트림 API의 최종 연산 중 하나로, 스트림의 요소들을 리스트로 수집하여 반환하는 역할을 합니다. 이 메서드를 이해하기 위해 자바 스트림과 컬렉터의 개념을 간략히 설명하겠습니다.

스트림과 컬렉터

  • 스트림(Stream): 자바 스트림은 데이터의 흐름을 추상화한 것으로, 컬렉션(예: 리스트, 셋)의 데이터를 함수형 스타일로 처리할 수 있게 합니다. 스트림은 중간 연산(예: map, filter)과 최종 연산(예: collect, forEach)으로 구성됩니다.

  • 컬렉터(Collector): 스트림의 요소들을 다양한 방식으로 결과를 수집할 수 있도록 도와주는 유틸리티 클래스입니다. Collectors 클래스는 자주 사용되는 컬렉터들을 제공합니다.

collect(Collectors.toList()) 설명

  1. collect 메서드:

    • 스트림의 최종 연산으로, 스트림의 요소들을 지정된 컬렉터로 수집합니다.
    • 스트림을 종료하고, 지정된 컬렉터가 정의한 방식으로 결과를 반환합니다.
  2. Collectors.toList():

    • Collectors 클래스의 정적 메서드로, 스트림의 요소들을 리스트로 수집하는 컬렉터를 반환합니다.
    • 이 컬렉터를 사용하면 스트림의 모든 요소를 리스트에 모아 반환할 수 있습니다.

예시를 통한 설명

다음은 collect(Collectors.toList())를 사용한 예시입니다:

List<String> fruits = Arrays.asList("apple", "banana", "cherry");
List<String> uppercaseFruits = fruits.stream()  // 리스트를 스트림으로 변환
    .map(String::toUpperCase)  // 각 요소를 대문자로 변환 (중간 연산)
    .collect(Collectors.toList());  // 변환된 요소들을 리스트로 수집 (최종 연산)

System.out.println(uppercaseFruits); // [APPLE, BANANA, CHERRY]

코드 흐름 설명

  1. fruits.stream():

    • fruits 리스트를 스트림으로 변환합니다.
    • 이제 fruits의 각 요소를 함수형 스타일로 처리할 수 있습니다.
  2. .map(String::toUpperCase):

    • 스트림의 각 요소에 String::toUpperCase 함수를 적용합니다.
    • 각 문자열을 대문자로 변환하여 새로운 스트림을 생성합니다.
  3. .collect(Collectors.toList()):

    • 변환된 스트림의 요소들을 리스트로 수집합니다.
    • 스트림의 처리를 종료하고, 리스트로 반환합니다.

전체 예제 코드

다음은 collect(Collectors.toList())를 사용하는 전체 예제 코드입니다:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "cherry");
        
        List<String> uppercaseFruits = fruits.stream()  // 리스트를 스트림으로 변환
            .map(String::toUpperCase)  // 각 요소를 대문자로 변환 (중간 연산)
            .collect(Collectors.toList());  // 변환된 요소들을 리스트로 수집 (최종 연산)
        
        System.out.println(uppercaseFruits); // [APPLE, BANANA, CHERRY]
    }
}

요약

  • 스트림(Stream): 데이터의 흐름을 추상화한 것으로, 함수형 스타일로 데이터를 처리할 수 있게 합니다.
  • 컬렉터(Collector): 스트림의 요소들을 다양한 방식으로 결과를 수집할 수 있도록 도와주는 유틸리티 클래스입니다.
  • collect(Collectors.toList()): 스트림의 요소들을 리스트로 수집하여 반환하는 최종 연산입니다.

이를 통해 스트림의 요소들을 원하는 방식으로 처리하고, 최종 결과를 리스트로 모아볼 수 있습니다.

0개의 댓글