질문 : Java 8에서 map ()과 flatMap () 메소드의 차이점은 무엇입니까?
Stream.map()
과 Stream.flatMap()
메서드의 차이점은 무엇입니까?
답변
map
과 flatMap
은 모두 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
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java [duplicate]에서 구분 기호 (split의 반대)를 사용하여 배열 요소를 결합하는 빠르고 쉬운 방법 (0) | 2021.10.19 |
---|---|
자바 스크립트의 코드 구성과 관련하여 일반적으로 인정되는 모범 사례 (0) | 2021.10.19 |
JavaScript에서 클립 보드에 복사하는 방법 (0) | 2021.10.14 |
자바에서 확인 된 예외와 확인되지 않은 예외 이해 (0) | 2021.10.14 |
Java가 정적 메서드 재정의를 허용하지 않는 이유 (0) | 2021.10.13 |