java8Stream map和flatmap的區別

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章