MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA][Stream]중간 연산-map() peek() flatMap()

뉴이 NUEY 2024. 12. 16. 15:53
반응형

 

중간연산의 종류

 

중간 연산 설명
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을 반환합니다.
※ 이전 포스트

2024.12.16 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Stream]중간 연산-distinct() skip() limit() sorted()

 


 

map(입력, 출력)
: 스트림 <요소타입> 변환하기

 

 

map()을 이용해 Stream<File> → Stream<String>으로 변환하였다.

 

 

  1. filStream = Stream.of(fileArr);
    → 스트림은 소모되면 재사용할 수 없기에, 다시 스트림으로 초기화 하였다.

  2. .map(File::getName)
    → 메서드참조 형식으로 적었다. File에서 getName()메서드를 이용해 이름만 추출하였다.
    람다식으로 (File f) -> f.getNAme() 적은 것과 동일하다.

※ 확장자만 대문자로 추출
.map(s -> s.substring(s.indexOf('.') + 1)) 를 추가하였다.

 


 

peek(람다식 or 메서드참조)
: 스트림의 요소를 소비하지 않고 엿보기

 

🌟 최종 연산인 forEach()와 거의 동일하나, 중간 연산으로 스트림을 소비하지 않는다.

 

  • 스트림 특성상 최종연산 수행 시, 중간 연산이 실행되기 때문에 출력결과가 섞여서 보이나
  • for문과 같이 모두 출력된 것이 확인된다.
  • 디버깅과 같은 용도로 많이 사용된다.

 


 

flatMap(람다식 or 메더드참조)
: 스트림의 스트림을 스트림으로 변환한다.

 

 

map()을 이용해 String 배열을 Stream으로 변환하면 Stream<Stream<String>>. 스트림의 스트림으로 변환된다.
출력결과

 

flatMap()을 사용하면 두 String배열을 합쳐 Stream<String>하나로 만들 수 있다.

 


 

문자열에서 띄어쓰기로 잘라내어 Stream<String>으로 변환하는 코드.

 

💡 split(정규식) 이 들어온다. 여기서 " +"하나 이상의 공백을 의미한다.

 

  • lineStream.flatMap(line-> Stream.of(line.split(" +")))
    • Stream<String>을 반환하고 그것이 타입이 된다.

    • 밑의 map() distinct()...등은 Stream<String>에 적용된다.


참조영상

반응형