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 |