1. 스트림이란
Java8부터 사용할 수 있는 기술로 람다를 이용해서 배열과 컬렉션을 함수형으로 처리
기존의 긴 for문과는 달리 가독성과 재사용성을 높임 단, for loop 보단 느리다
- 원본 데이터 소스를 변경x, 읽기전용.
- 멀티쓰레드로 병렬처리 가능
- 최종 연산 전까지 중간 연산을 수행하지 않는다.
- 기본형 stream 제공 ex) Stream<Integer> 대신 IntStream 제공
- 배열 / 컬렉션 / 기본타입형 / 병렬스트림이 있음
2. Stream 가공하기
- Filtering(if문)
스트림 내 요소들을 조건으로 걸러내는 작업
Stream<String> stream = list.stream()
.filter(list -> list.contains("a"));
- Mapping
스트림 내 요소들을 하나씩 특정값으로 변환, 원하는 타입으로 변경가능
Stream<String> stream = list.stream()
.map(String::toUpperCase);
- Sorting
스트림 내 요소들을 정렬하는 작업, Comparator 클래스 이용
Stream<String> stream = list.stream()
.sorted(Comparator.comparingInt(String::length))
3. Stream 메서드
- 계산 : count() sum() min() max() average()
- 감소 : reduce()
콜렉트 : collect() - 특정요소 체크 : anyMatch() allMatch() noneMatch()
- 이터레이팅 : forEach()
- 찾기 : findAny() findFirst()
'TIL' 카테고리의 다른 글
[TIL] 20240112 singleton 패턴 (0) | 2024.01.12 |
---|---|
[TIL] 20240110 Java 예외처리와 트랜잭션 (0) | 2024.01.10 |
[TIL] 20240105 Java 클래스 간의 데이터 전달 (0) | 2024.01.05 |
[TIL] 20240104 Java 프로세스와 쓰레드(1) (0) | 2024.01.04 |
[TIL] 20240103 Java 예외처리, 제네릭, Wrapper (1) | 2024.01.03 |