map只是一維 1對1 的映射
而flatmap可以將一個2維的集合映射成一個一維,相當於他映射的深度比map深了一層 ,
所以名稱上就把map加了個flat 叫flatmap
直接上代碼測試:
@Test
public void test36(){
/**獲取單詞,**/
List<String> list = Arrays.asList("hello welcome", "world hello", "hello world",
"hello world welcome");
List<Stream<String>> list1 = list.stream().map(item -> Arrays.stream(item.split(" "))).collect(Collectors.toList());
list1.forEach(t->t.forEach(System.out::println));
System.out.println("---------- *** ----------------------------------------------------------->");
list.stream().flatMap(item -> Arrays.stream(item.split(" "))).collect(Collectors.toList()).forEach(System.out::println);
}
直接就可以看出來,map是兩層,而flatmap只需要映射一次就出來了,而且他們的返回類型也不一樣,map返回的是Stream類型的集合,flatmap返回的string類型的集合。
參考:https://www.cnblogs.com/diegodu/p/8794857.html