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

*/

 

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