map和flatMap区别

map和flatMap都是Java8新语法stream的方法,map很常用,就是传入一个元素,返回1个元素(null也算元素),它的方法签名用的是Function,调用方法是R apply(T t)
贴个代码,直观点:


img1.jpg
img2.jpg

补充:img1中还有mapToDouble,mapToInt,mapToLong,这些方法的map映射,转换之后生成对应的double,int,long类型,避免频繁的装箱和拆箱,来达到提高效率。

再来说说flatMap,从img1中就可以看到它返回的类型是一个流,从这里就说明了它返回的是1个或多个元素(null不算)
贴代码(场景:多个单词,重复的字母不显示)

    @Test
    public void test2(){
        List list = Arrays.asList("Hello", "World");
        List collect = list.stream()
                .map(e -> e.split(""))            // 分割为数组
                .flatMap(array -> Arrays.stream(array)) // 把数组转为流
                .distinct()                             // 去重
                .collect(Collectors.toList());          // 转为List集合
        System.out.println(collect);
        // 打印结果:[H, e, l, o, W, r, d]
    }

你可能感兴趣的:(map和flatMap区别)