map 和 flatMap 區別

map & flatMap

這兩個函數經常被使用。它們有如下區別:

map

數組流中的每一個值,使用所提供的函數執行一遍,一一對應。得到元素個數相同的數組流

flatMap

flat是扁平的意思。它把數組流中的每一個值,使用所提供的函數執行一遍,一一對應。得到元素相同的數組流。只不過,裏面的元素也是一個子數組流。把這些子數組合併成一個數組以後,元素個數大概率會和原數組流的個數不同。

 

   @org.junit.Test
    public void testFlatMap() {
        System.out.println("test map:");
        Stream.of(1, 2, 3).map(n -> n * 100)
                .forEach(System.out::println);

        System.out.println("test flatMap:");
        Stream.of(1, 2, 3).flatMap(n -> n <= 2 ? Stream.of(n, n * 100) : Stream.of(n))
                .forEach(System.out::println);
    }


/**
輸出結果:
test map:
100
200
300
test flatMap:
1
100
2
200
3

*/

 

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