반응형
중간연산의 종류
중간 연산 | 설명 | |
Stream<T> distinct() | 중복 제거. | |
Stream<T> filter(Predicate<T> predicate) | 조건에 맞지 않는 요소 제거. | |
Stream<T> limit(long maxSize) | 스트림 일부 잘라내기. | |
Stream<T> skip(long n) | 스트림 일부 건너뛰기. | |
Stream<T> peek(Consumer<T> action) | 작업 중간을 확인할 때 사용한다. | |
Stream<T> sorted() Stream<T> sorted(Comparator<T> comparator) |
요소 정렬 | |
Stream<R> DoubleStream IntStream LongStream |
map(Function<T, R> mapper) mapToDouble(ToDoubleFunction<T> mapper) mapToInt(ToIntFunction<T> mapper) mapToLong(ToLongFunction<T> mapper) |
스트림의 요소를 변환한다. |
Stream<R> DoubleStream IntStream LongStream |
flatMap(Function<T, Stream<R>> mapper) flatMapToDouble(Function<T,Doublestream> m) flatMapToInt(Function<T, Intstream> m) flatMapToLong(Function<T, Longstream> m) |
🌟 중간 연산은 모두 Stream을 반환합니다.
※ 이전 포스트
map(입력, 출력)
: 스트림 <요소타입> 변환하기
- filStream = Stream.of(fileArr);
→ 스트림은 소모되면 재사용할 수 없기에, 다시 스트림으로 초기화 하였다. - .map(File::getName)
→ 메서드참조 형식으로 적었다. File에서 getName()메서드를 이용해 이름만 추출하였다.
람다식으로 (File f) -> f.getNAme() 적은 것과 동일하다.
※ 확장자만 대문자로 추출
peek(람다식 or 메서드참조)
: 스트림의 요소를 소비하지 않고 엿보기
🌟 최종 연산인 forEach()와 거의 동일하나, 중간 연산으로 스트림을 소비하지 않는다.
- 스트림 특성상 최종연산 수행 시, 중간 연산이 실행되기 때문에 출력결과가 섞여서 보이나
- for문과 같이 모두 출력된 것이 확인된다.
- 디버깅과 같은 용도로 많이 사용된다.
flatMap(람다식 or 메더드참조)
: 스트림의 스트림을 스트림으로 변환한다.
💡 split(정규식) 이 들어온다. 여기서 " +" 는 하나 이상의 공백을 의미한다.
- lineStream.flatMap(line-> Stream.of(line.split(" +")))
- Stream<String>을 반환하고 그것이 타입이 된다.
- 밑의 map() distinct()...등은 Stream<String>에 적용된다.
- Stream<String>을 반환하고 그것이 타입이 된다.
반응형
'☕ JAVA > ☕ Class & Method' 카테고리의 다른 글
[JAVA][Stream]최종 연산 (0) | 2024.12.17 |
---|---|
[JAVA]Optional<T> (0) | 2024.12.17 |
[JAVA][Stream]중간 연산-filter() distinct() skip() limit() sorted() (0) | 2024.12.16 |
[JAVA][Stream]스트림 생성 (1) | 2024.12.13 |
[JAVA][stream]스트림이란? (+특징) (0) | 2024.12.13 |