⭐ Plogramming/JAVA

Stream(collect, filter, map)

김진한

Stream

  •  java에서 데이터 요소들의 시퀀스를 나타내는 인터페이스
  • 함수형 프로그래밍 개념을 기반
  • 데이터를 다루는 작업을 간결하고 효율적으로 표현
  • collection의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 하는 반복자
  • 병렬 처리(내부 반복자), 순차 처리가 가능함
  • 최종 처리(집계 처리: 반복, 카운팅, 평균, 총합) & 중간 처리(매핑, 필터링, 정렬)

* Stream API

: 컬렉션, 배열 또는 I/O 자원과 같은 데이터 소스에서 데이터를 처리하고 조작하는 기능 제공

 

1. collect

  • Stream의 요소들을 수집하여 새로운 컬렉션이나 값으로 변환하는 작업을 수행
  • collectors 클래스의 정적 메소드들을 사용하여 다양한 종류의 컬렉션을 생성하고 데이터를 수집
  • ex) toList() 로 Stream요소들을 list로 수집할 수 있음
List<String> names = List.of("Alice", "Bob", "Charlie", "Dave");

List<String> result = names.stream()
                          .filter(name -> name.length() > 3)
                          .collect(Collectors.toList());

System.out.println(result); // 출력: [Alice, Charlie]

 

2. filter

  • 주어진 조건을 만족하는 요소만을 선택하여 새로운 Stream을 생성하는 작업을 수행
  •  predicate 인터페이스를 사용하여 요소를 필터링하는 조건을 지정
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

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

System.out.println(evenNumbers); // 출력: [2, 4, 6, 8, 10]

 

3. map

  • Stream의 각 요소에 대해 주어진 함수를 적용하여 새로운 값을 생성하는 작업을 수행
  • 각 요소를 다른 형태로 변환하거나 특정 필드를 추출할 수 있음
List<String> names = List.of("Alice", "Bob", "Charlie");

List<Integer> nameLengths = names.stream()
                                 .map(name -> name.length())
                                 .collect(Collectors.toList());

System.out.println(nameLengths); // 출력: [5, 3, 7]

 

'⭐ Plogramming > JAVA' 카테고리의 다른 글

Upstream과 Downstream  (0) 2023.07.12
쿼츠 스케줄러  (0) 2023.05.08
[Java] JVM / JRE / JDK  (0) 2022.07.15
[JAVA] Lombok(롬복)  (0) 2022.06.19