Java 8의 map() 메서드와 platMap() 메서드의 차이점은 무엇입니까?
Java 8에서는 와 방법의 차이점은 무엇입니까?
다.map
★★★★★★★★★★★★★★★★★」flatMap
할 수 Stream<T>
둘 다을 합니다.Stream<R>
점은 ''는 '다르다'는 '다르다'와 '다르다'는'map
만, operation 에서는, operation 에서는 각 입력치에 이 생성됩니다.flatMap
각 번호의 값이 생성됩니다.operation 에서는, 「0」으로 합니다.
이는 각 작업에 대한 인수에 반영됩니다.
map
하다.Function
입력 스트림의 각 값에 대해 호출되며 출력 스트림으로 전송되는 결과 값이 1개 생성됩니다.
flatMap
연산은 개념적으로 하나의 값을 소비하고 임의의 수의 값을 생성하는 함수를 취합니다.그러나 Java에서는 메서드가 0 또는 1개의 값만 반환할 수 있기 때문에 메서드가 임의의 수의 값을 반환하는 것은 번거롭습니다. API의 기능을 할 수 .flatMap
""을 합니다.List
출력으로 송신됩니다.이것이 스트림 라이브러리이기 때문에 임의의 수의 반환값을 나타내는 가장 적절한 방법은 매퍼 함수 자체가 스트림을 반환하는 것입니다.매퍼에 의해 반환된 스트림의 값은 스트림에서 배출되어 출력 스트림으로 전달됩니다.매퍼 함수에 대한 각 콜에 의해 반환되는 값의 "클럼프"는 출력 스트림에서 전혀 구별되지 않기 때문에 출력이 "플랫텐화"된 것으로 간주됩니다.
으로 '은 '매퍼 '을 합니다.flatMap
Stream.empty()
의 , 「0 의 값을 송신하는 경우」와 같이 .Stream.of(a, b, c)
여러 개의 값을 반환하려면 이 명령을 사용합니다.하지만 물론 어떤 스트림도 반환될 수 있습니다.
Stream.flatMap
그 이름에서 짐작할 수 있듯이, 그것은 하나의 조합이다.map
a. a. a.flat
즉 그 다음에 평평하게 뜻입니다. Stream.map
스트림을 평평하게 하지 않고 스트림에만 함수를 적용합니다.
스트림을 평탄하게 만드는 방법을 이해하려면 다음과 같은 구조를 고려하십시오.[ [1,2,3],[4,5,6],[7,8,9] ]
'두 단계 있어요을 평평하게 만든다는 것은 을 "한 단계구조로 을 의미합니다.[ 1,2,3,4,5,6,7,8,9 ]
.
보다 실용적인 관점을 얻기 위해 두 가지 예를 제시하겠습니다.
의 첫 번째 예map
:
@Test
public void convertStringToUpperCaseStreams() {
List<String> collected = Stream.of("a", "b", "hello") // Stream of String
.map(String::toUpperCase) // Returns a stream consisting of the results of applying the given function to the elements of this stream.
.collect(Collectors.toList());
assertEquals(asList("A", "B", "HELLO"), collected);
}
한 것은 .Function
할 수 있습니다.String
대문자로 표시됩니다.
의 두 번째 예flatMap
:
@Test
public void testflatMap() throws Exception {
List<Integer> together = Stream.of(asList(1, 2), asList(3, 4)) // Stream of List<Integer>
.flatMap(List::stream)
.map(integer -> integer + 1)
.collect(Collectors.toList());
assertEquals(asList(2, 3, 4, 5), together);
}
두 번째 예에서는 Stream of List가 전달됩니다.정수의 흐름이 아닙니다!
변환 함수를 사용해야 하는 경우(맵을 통해), 먼저 스트림을 다른 것(정수의 스트림)으로 평탄화해야 합니다.
ifflatMap
이 삭제되면 다음 오류가 반환됩니다.연산자 +가 인수 유형 목록, int에 대해 정의되지 않았습니다.
에 + 수 .List
정!!
게시글을 자세히 검토하여 정확한 아이디어를 얻으십시오.
맵 vs 플랫맵:
리스트에서 각 단어의 길이를 반환하려면 다음과 같은 작업을 수행합니다.
아래 짧은 버전
아래 2개의 목록을 수집하면
플랫맵 => [1,2], [1,1] => [1,2], [1,1]여기서 2개의 리스트는 리스트 내에 배치되므로 출력은 리스트가 포함된 리스트가 됩니다.
평면 지도 => [1,2], [1,1] => [1,2,1,1] 여기서는 두 개의 목록이 평탄화되고 값만 목록에 배치되므로 출력은 요소만 포함하는 목록이 됩니다.
기본적으로 모든 개체를 하나로 병합합니다.
## 자세한 버전은 다음과 같습니다.-
예를 들어 다음과 같습니다.
목록 ["STACK", "OOOVVER"]을(를) 고려하면 [STACKOVER](이 목록에서 고유한 문자만 반환) 처음에 다음과 같은 방법으로 [STACKOVER]에서 목록을 반환하려고 합니다.
public class WordMap {
public static void main(String[] args) {
List<String> lst = Arrays.asList("STACK","OOOVER");
lst.stream().map(w->w.split("")).distinct().collect(Collectors.toList());
}
}
여기서 문제는 맵 메서드에 전달된 Lambda가 각 워드에 대해 문자열 배열을 반환한다는 것입니다.따라서 맵 메서드에 의해 반환되는 스트림은 실제로는 스트림 유형이지만 다음 그림에 표시된 문자의 스트림을 나타내는 스트림입니다.
그림 A:
사용해서 할 수 이렇게 하실 수 있습니다.
그럼 맵과 어레이를 사용하여 이 문제를 해결하는 방법을 살펴보겠습니다.stream은 우선 어레이 스트림이 아닌 문자 스트림이 필요합니다.Arrays.stream()이라는 메서드가 있으며 어레이를 사용하여 스트림을 생성합니다.다음은 예를 제시하겠습니다.
String[] arrayOfWords = {"STACK", "OOOVVVER"};
Stream<String> streamOfWords = Arrays.stream(arrayOfWords);
streamOfWords.map(s->s.split("")) //Converting word in to array of letters
.map(Arrays::stream).distinct() //Make array in to separate stream
.collect(Collectors.toList());
위의 내용은 아직 기능하지 않습니다.이는 스트림 리스트(정확히는 Stream>)로 끝나기 때문입니다.대신 먼저 각 단어를 개별 문자의 배열로 변환한 후 각 배열을 개별 스트림으로 만들어야 합니다.
platMap을 사용하면 다음과 같이 이 문제를 해결할 수 있습니다.
String[] arrayOfWords = {"STACK", "OOOVVVER"};
Stream<String> streamOfWords = Arrays.stream(arrayOfWords);
streamOfWords.map(s->s.split("")) //Converting word in to array of letters
.flatMap(Arrays::stream).distinct() //flattens each generated stream in to a single stream
.collect(Collectors.toList());
platMap은 각 어레이를 스트림이 아닌 해당 스트림의 콘텐츠로 매핑합니다.맵(Arrays:: stream)을 사용하는 동안 생성되는 모든 개별 스트림이 단일 스트림으로 병합됩니다.그림 B는 platMap 메서드를 사용하는 경우의 효과를 나타내고 있습니다.그림 A의 지도와 비교해 보십시오.그림 B
platMap 메서드를 사용하면 스트림의 각 값을 다른 스트림으로 대체하고 생성된 모든 스트림을 단일 스트림에 결합할 수 있습니다.
한 줄의 답변:a를 a로 평탄하게 만드는 데 도움이 됩니다.같은 방법으로 a도 a로 평탄하게 됩니다.
보시는 바와 같이 다음 항목만 있습니다.
- 은 " " " 입니다.
Stream<List<Item>>
- 은 '돌아가다'입니다.
List<List<Item>>
및 다음과 같이 설정합니다.
- 은 " " " 입니다.
Stream<Item>
- 은 '돌아가다'입니다.
List<Item>
다음은 바로 아래에 사용된 코드의 테스트 결과입니다.
-------- Without flatMap() -------------------------------
collect() returns: [[Laptop, Phone], [Mouse, Keyboard]]
-------- With flatMap() ----------------------------------
collect() returns: [Laptop, Phone, Mouse, Keyboard]
사용된 코드:
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
public class Parcel {
String name;
List<String> items;
public Parcel(String name, String... items) {
this.name = name;
this.items = Arrays.asList(items);
}
public List<String> getItems() {
return items;
}
public static void main(String[] args) {
Parcel amazon = new Parcel("amazon", "Laptop", "Phone");
Parcel ebay = new Parcel("ebay", "Mouse", "Keyboard");
List<Parcel> parcels = Arrays.asList(amazon, ebay);
System.out.println("-------- Without flatMap() ---------------------------");
List<List<String>> mapReturn = parcels.stream()
.map(Parcel::getItems)
.collect(Collectors.toList());
System.out.println("\t collect() returns: " + mapReturn);
System.out.println("\n-------- With flatMap() ------------------------------");
List<String> flatMapReturn = parcels.stream()
.map(Parcel::getItems)
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println("\t collect() returns: " + flatMapReturn);
}
}
★★★★★★★★★★★★★★★★★★★★★에 건네주는 기능stream.map
1번으로 하다즉, 입력 스트림의 각 개체는 출력 스트림에 정확히1개의 개체가 됩니다.
★★★★★★★★★★★★★★★★★★★★★에 건네주는 기능stream.flatMap
각 객체의 스트림을 반환합니다.즉, 함수는 각 입력 객체에 대해 임의의 수의 객체를 반환할 수 있습니다(없음).그 결과 생성된 스트림이 하나의 출력 스트림에 연결됩니다.
.map은 매핑용입니다.
Stream.of("dog", "cat") // stream of 2 Strings
.map(s -> s.length()) // stream of 2 Integers: [3, 3]
합니다.A
의 아이템으로B
자바독
.flatMap은 합성용입니다.
Stream.of("dog", "cat") // stream of 2 Strings
.flatMapToInt(s -> s.chars()) // stream of 6 ints: [d, o, g, c, a, t]
은 임의의 --1을 합니다.A
Stream< B>
그런 다음 --2는 모든 스트림을 하나의 (플랫) 스트림으로 연결합니다.자바독
1:는 오브젝트(Stream이 아닌 (IntStream 1: 의 개념을 ..flatMap
.
2 2 : String . chars ( ) ints 。 실제 '이렇게 하다' 입니다.[100, 111, 103, 99, 97, 116]
서, snowledge.100
입니다.'d'
,111
입니다.'o'
etc.d t] 등으로 됩니다. ᄃ, o, g, c, a, t, ᄃ
지도에는 요소의 리스트와 (함수, 동작) f가 있습니다.
[a,b,c] f(x) => [f(a),f(b),f(c)]
그리고 평면 지도에는 요소 리스트가 있고 (함수, 작용) f가 있으며 결과를 평탄하게 만들고 싶습니다.
[[a,b],[c,d,e]] f(x) =>[f(a),f(b),f(c),f(d),f(e)]
대부분의 답변이 단순한 문제를 지나치게 복잡하게 만든다는 느낌이 듭니다. 요.map
이해하기 쉬워야 할 작품들
하다 보면 네스트 될수 있습니다.map()
, . . . . . . . .flatMap()
방법은 래핑을 회피함으로써 이를 극복하도록 설계되어 있습니다.
예:
1
List<List<Integer>> result = Stream.of(Arrays.asList(1), Arrays.asList(2, 3))
.collect(Collectors.toList());
우리는 내포된 목록을 보내고 네스트 리스트는,다음의 방법으로 회피할수 있습니다를 사용하여를 피할 수 있다.flatMap
:
List<Integer> result = Stream.of(Arrays.asList(1), Arrays.asList(2, 3))
.flatMap(i -> i.stream())
.collect(Collectors.toList());
2
Optional<Optional<String>> result = Optional.of(42)
.map(id -> findById(id));
Optional<String> result = Optional.of(42)
.flatMap(id -> findById(id));
여기서:
private Optional<String> findById(Integer id)
map() 및 platMap()
map()
함수 <T, R> 람다 파라미터를 취하기만 하면 됩니다.여기서 T는 요소, R은 T를 사용하여 작성된 반환 요소입니다.마지막에는 타입 R의 오브젝트를 가진 스트림이 있습니다.간단한 예는 다음과 같습니다.
Stream
.of(1,2,3,4,5)
.map(myInt -> "preFix_"+myInt)
.forEach(System.out::println);
그것은 단순히 1-5형식의 유형 요소 1~5만있으면 됩니다 요소들이 걸린다.Integer
, 각 요소 형식에서 는 각 요소를 사용하여 유형에서 새로운 요소를 구축합니단 새로운 원소를 만드는데 사용한다.String
값 가치 있게와"prefix_"+integer_value
그리고 출력한다.출력합니다.
flatMap()
그것은 그 flatMap()flatMap()이취한다는것을 알면 편리합니다 함수를 기능이 잡는지 아는 것이 유용하다.F<T, R>
where어디에
T는 스트림을 구축할 수 있는 유형입니다.리스트(T.stream()), 어레이(Arrays.stream(someArray) 등)를 지정할 수 있습니다.스트림이 형태와 함께/또는 형태와 함께 있을 수 있는 모든 것.아래 예에서 각 개발에는 여러 언어가 있으므로 개발하십시오.언어는 목록이며 람다 매개변수를 사용합니다.
R은 T를 사용하여 구축되는 스트림입니다.T의 인스턴스가 많다는 것을 알고 있으면 당연히 R로부터의 스트림이 많아집니다.이제 유형 R의 모든 스트림이 유형 R의 단일 '플랫' 스트림으로 결합됩니다.
예
Bachiri Taoufiq의 예시는 단순하고 이해하기 쉽다.알기 쉽게 하기 위해 개발자 팀이 있습니다.
dev_team = {dev_1,dev_2,dev_3}
각 개발자는 다양한 언어를 알고 있습니다.
dev_1 = {lang_a,lang_b,lang_c},
dev_2 = {lang_d},
dev_3 = {lang_e,lang_f}
stream.map()을 dev_team에 적용하여 각 dev의 언어를 가져옵니다.
dev_team.map(dev -> dev.getLanguages())
는 다음과 같은 구조를 제공합니다.
{
{lang_a,lang_b,lang_c},
{lang_d},
{lang_e,lang_f}
}
이것은 기본적으로 기본적으로는List<List<Languages>> /Object[Languages[]]
. 그렇지 않아 매우 예쁘고, Java8-like!별로 예쁘지도 자바8도 아니야!않고!
A함께와Stream.flatMap()
로 구조를취하기 때문에수 있습니다 '외출'할 사물을 위의 structure위의가 걸린다 너의 것들을 'flatten 수 있다.
그리고그리고그것을 로 바꾼다로 바꾼다.{lang_a, lang_b, lang_c, lang_d, lang_e, lang_f}
로 A기본적으로사용할 수 있습니다 같이 다음과. 이것은 기본적으로 사용될 수 있다.List<Languages>/Language[]/etc
그래서 결국, 당신의 코드는 다음과 같이 이해될 것입니다.
dev_team
.stream() /* {dev_1,dev_2,dev_3} */
.map(dev -> dev.getLanguages()) /* {{lang_a,...,lang_c},{lang_d}{lang_e,lang_f}}} */
.flatMap(languages -> languages.stream()) /* {lang_a,...,lang_d, lang_e, lang_f} */
.doWhateverWithYourNewStreamHere();
또는 단순하게:
dev_team
.stream() /* {dev_1,dev_2,dev_3} */
.flatMap(dev -> dev.getLanguages().stream()) /* {lang_a,...,lang_d, lang_e, lang_f} */
.doWhateverWithYourNewStreamHere();
map() 및 platMap()을 사용하는 경우:
map()
스트림에서 T타입의 각 요소가 R타입의 단일 요소로 매핑/변환되어야 하는 경우.그 결과 유형(1 start element -> 1 end element)의 매핑이 이루어지며 유형 R 요소의 새로운 스트림이 반환됩니다.flatMap()
스트림에서 T타입의 각 요소가 R타입의 요소 모음으로 매핑/변환되어야 하는 경우.그 결과 유형(1 start 요소 -> n end 요소)이 매핑됩니다.그런 다음 이러한 컬렉션은 R 유형의 새로운 요소 스트림으로 병합(또는 평탄화)됩니다.이것은 예를 들어 중첩된 루프를 나타낼 때 유용합니다.
Java 8 이전 버전:
List<Foo> myFoos = new ArrayList<Foo>();
for(Foo foo: myFoos){
for(Bar bar: foo.getMyBars()){
System.out.println(bar.getMyName());
}
}
Java 8의 투고
myFoos
.stream()
.flatMap(foo -> foo.getMyBars().stream())
.forEach(bar -> System.out.println(bar.getMyName()));
Oracle의 옵션 기사에서는 맵과 플랫맵의 차이점을 강조하고 있습니다.
String version = computer.map(Computer::getSoundcard)
.map(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
불행히도, 이 코드는 컴파일되지 않습니다. 왜일까요?변수 시스템이 유형입니다.
Optional<Computer>
그래서 맵 메서드를 호출하는 것이 완벽하게 맞습니다.는 Optional getSoundcard() 유형의 합니다., 맵 가 타입의 입니다.Optional<Optional<Soundcard>>
getUSB()를 사용합니다.이는 가장 바깥쪽 옵션에는 값으로서 another Optional이 포함되기 때문입니다.이 값은 물론 getUSB() 메서드를 지원하지 않습니다.스트림의 경우 flatMap 메서드는 함수를 인수로 받아들이고 다른 스트림을 반환합니다.이 함수는 스트림의 각 요소에 적용되어 스트림의 스트림이 생성됩니다.단, platMap은 생성된 각 스트림을 해당 스트림의 내용으로 대체하는 효과가 있습니다.즉, 함수에 의해 생성된 모든 개별 스트림이 하나의 스트림으로 결합되거나 "플랫텐"됩니다.여기서도 마찬가지로 2레벨의 Optional을 1로 "평준화"하고 싶습니다.
옵션에서는 platMap 메서드도 지원됩니다.그 목적은 (지도 조작과 마찬가지로) Optional 값에 변환 함수를 적용한 후 결과 2레벨 Optional을 단일 레벨로 평탄화하는 것입니다.
따라서 코드를 수정하려면 platMap을 사용하여 다음과 같이 다시 작성해야 합니다.
String version = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
은 'platMap'이
Optional<Soundcard>
됩니다.Optional<Optional<Soundcard>>
은 "platMap"을Optional<USB>
object.getVersion()이 하므로 세
http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html
이 질문에 대답해야 하는지는 잘 모르겠습니다만, 이것을 이해하지 못하는 사람을 만날 때마다, 같은 예를 사용합니다.
네가 사과를 가지고 있다고 상상해봐. a.map
을 '사과'로 하고 있다.apple-juice
예를 들어, 1대 1 매핑입니다.
. 그 사과다.flatMap
는, 1 대 다의 1 개의 애플을 입력으로, 다수의 시드를 출력으로 합니다.
맵:- 이 메서드는 하나의 함수를 인수로 사용하여 전달된 함수를 스트림의 모든 요소에 적용하여 생성된 결과로 구성된 새 스트림을 반환합니다.
예를 들어 정수 값(1,2,3,4,5)과 로직이 전달된 정수의 제곱인 함수 인터페이스가 있다고 가정합니다.( e - > e * e ) 。
List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> newList = intList.stream().map( e -> e * e ).collect(Collectors.toList());
System.out.println(newList);
출력:-
[1, 4, 9, 16, 25]
보시다시피 출력은 값이 입력 스트림 값의 제곱인 새로운 스트림입니다.
[1, 2, 3, 4, 5] -> apply e -> e * e -> [ 1*1, 2*2, 3*3, 4*4, 5*5 ] -> [1, 4, 9, 16, 25 ]
http://codedestine.com/java-8-stream-map-method/
FlatMap :- 이 메서드는 하나의 함수를 인수로 사용하고, 이 함수는 하나의 매개 변수 T를 입력 인수로 받아들인 후 반환 값으로 매개 변수 R의 스트림을 반환합니다.이 함수를 이 스트림의 각 요소에 적용하면 새로운 값의 스트림이 생성됩니다.각 요소에 의해 생성된 이러한 새로운 스트림의 모든 요소가 새로운 스트림에 복사됩니다.이 스트림은 이 메서드의 반환값이 됩니다.
학생에게 여러 과목을 선택할 수 있는 학생 대상의 리스트가 있습니다.
List<Student> studentList = new ArrayList<Student>();
studentList.add(new Student("Robert","5st grade", Arrays.asList(new String[]{"history","math","geography"})));
studentList.add(new Student("Martin","8st grade", Arrays.asList(new String[]{"economics","biology"})));
studentList.add(new Student("Robert","9st grade", Arrays.asList(new String[]{"science","math"})));
Set<Student> courses = studentList.stream().flatMap( e -> e.getCourse().stream()).collect(Collectors.toSet());
System.out.println(courses);
출력:-
[economics, biology, geography, science, history, math]
출력은 입력 스트림의 각 요소에 의해 반환되는 스트림의 모든 요소의 집합인 새로운 스트림입니다.
[S1, S2, S3] -> [{"역사", "수학", "지리", {"경제학", {"생물학", {"과학", "수학] -> [경제학, 생물학, 지리학, 역사, 수학]
http://codedestine.com/java-8-stream-flatmap-method/
라고 생각하면map()
로)for
"루프")flatmap()
(네스트된) 것처럼). 2단계 반복입니다.for
(되는 각 요소 루프를 합니다. 을 사용법foo
및을 실행합니다.foo.getBarList()
그 한다.barList
map()
: 스트림을 취하여 모든 요소에 대해 작업을 수행하고 모든 프로세스의 단일 결과를 수집하여 다른 스트림을 출력합니다.기능하다되어 「」가 되었을 .null
,null
마지막 스트림을 구성하는 데 사용됩니다.따라서 결과 스트림의 요소 수는 입력 스트림 수와 동일합니다.
flatmap()
: 요소/패키지 스트림과 함수(패키지 정의)를 취하여 각 스트림의 각 요소에 함수를 적용하여 모든 중간 결과 스트림을 수집하여 더 큰 스트림으로 만듭니다.어떤 요소의 처리로 인해null
은 "결과 스트림의 요소 수는 입력이 여러 스트림일 경우 모든 입력에 포함된 모든 요소의 합계입니다.
간단한 답변입니다.
map
에 의해, 「」가 이 있습니다.Stream
Stream
.EXStream<Stream<Integer>>
flatMap
조작하면, 생산만 됩니다.Stream
뭔가에 대해서요.EXStream<Integer>
모든 메시지를 읽음으로써 이해하기 쉬운 방법은 다음과 같습니다.
map
a a a aflat
[, [0, 1, 2, 3, 4, 5]flatMap
[[1, 3, 5], [2, 4, 6]의 요소 목록이 있는 경우:즉, 맵 조작을 각 요소에 적용하기 전에 리스트를 평탄화해야 합니다.
이치노는 「」입니다.map
.또, 「1」은 「1」로 설정되어 있습니다.flatMap
으로는 '이행'입니다.map
+flatten
보다 위해 를 들어 반환할 합니다.보다 명확하게 하기 위해 복수의 값이 필요한 경우(예를 들어 루프가 어레이를 반환할 것으로 예상되는 경우)에는 platMap을 사용합니다.
제가 블로그를 썼는데, 여기서 확인하실 수 있습니다.
flatMap
★★★★★★★★★★★★★★★★★」map
이치노
flatMap
이 함수는 스트림의 각 요소에 대해 새로운 스트림을 반환하고 각 요소에 대해 함수에 의해 반환된 스트림의 모든 요소를 조합한 스트림을 반환합니다. ,에서는,flatMap
소스로부터의 각 요소에 대해 함수에 의해 여러 요소가 생성됩니다.http://www.zoftino.com/java-stream-examples#flatmap-operation
map
함수는 변환된 값을 반환하고 변환된 요소를 포함하는 새 스트림을 반환합니다. ,에서는,map
소스로부터의 각 요소에 대해 함수에 의해 변환된 요소가 1개 생성됩니다.http://www.zoftino.com/java-stream-examples#map-operation
flatMap()
또한 스트림의 부분적인 지연 평가도 이용합니다.첫 번째 스트림을 읽고 필요한 경우에만 다음 스트림으로 이동합니다.동작에 대해 자세히 설명합니다.flatMap은 게으름을 보증합니까?
또한 C#에 대해 잘 알고 있다면 좋은 유추도 할 수 있습니다.으로 C#은 C#입니다.Select
와 비슷한map
C# c C#SelectMany
java flatMap
코틀린 코틀린
언급URL : https://stackoverflow.com/questions/26684562/whats-the-difference-between-map-and-flatmap-methods-in-java-8
'programing' 카테고리의 다른 글
Java로 정렬된 컬렉션 (0) | 2022.08.10 |
---|---|
C, C++에서 Windows 또는 Linux 검출 (0) | 2022.08.10 |
0x 표기법을 사용한 숫자는 무엇을 의미합니까? (0) | 2022.08.10 |
라우터에서 ASync/Awit가 예상대로 작동하지 않습니다.교도소에 있는 각 간수들 전에? (0) | 2022.08.10 |
NULL, '\0'과 0의 차이점은 무엇입니까? (0) | 2022.08.10 |