프로그래밍 언어/JAVA

Java 8에서 map ()과 flatMap () 메소드의 차이점

Rateye 2021. 10. 15. 10:41
728x90
반응형
질문 : Java 8에서 map ()과 flatMap () 메소드의 차이점은 무엇입니까?

Stream.map()Stream.flatMap() 메서드의 차이점은 무엇입니까?

답변

mapflatMap 은 모두 Stream<T> 적용될 수 있으며 둘 다 Stream<R> 반환합니다. 차이점은 map 작업은 각 입력 값에 대해 하나의 출력 값을 flatMap 작업은 각 입력 값에 대해 임의의 숫자 (0 개 이상의) 값을 생성한다는 것입니다.

이는 각 작업에 대한 인수에 반영됩니다.

map 작업은 입력 스트림의 각 값에 대해 호출되고 하나의 결과 값을 생성 Function

flatMap 작업은 개념적으로 하나의 값을 사용하고 임의의 수의 값을 생성하려는 함수를 사용합니다. 그러나 Java에서는 메서드가 0 또는 하나의 값만 반환 할 수 있기 때문에 임의의 수의 값을 반환하는 것은 번거 롭습니다. flatMap 의 매퍼 함수가 값 List 을 반환 한 다음 출력으로 전송되는 API를 상상할 수 있습니다. 이것이 스트림 라이브러리라는 점을 감안할 때, 임의의 수의 반환 값을 나타내는 특히 적절한 방법은 매퍼 함수 자체가 스트림을 반환하는 것입니다! 매퍼가 반환 한 스트림의 값은 스트림에서 배출되어 출력 스트림으로 전달됩니다. 매퍼 함수를 호출 할 때마다 반환되는 값의 "클럼프"는 출력 스트림에서 전혀 구별되지 않으므로 출력이 "평탄화"되었다고합니다.

일반적인 사용의 매퍼 기능입니다 flatMap 반환 Stream.empty() 는 같은 0 값, 또는 뭔가를 보내려고하면 Stream.of(a, b, c) 은 여러 값을 반환하고자하는 경우. 그러나 물론 모든 스트림이 반환 될 수 있습니다.

출처 : https://stackoverflow.com/questions/26684562/whats-the-difference-between-map-and-flatmap-methods-in-java-8
728x90
반응형