美文网首页
map和flatMap区别

map和flatMap区别

作者: 78f6ced3a012 | 来源:发表于2019-06-07 11:31 被阅读0次

    map和flatMap都是Java8新语法stream的方法,map很常用,就是传入一个元素,返回1个元素(null也算元素),它的方法签名用的是Function<T, R>,调用方法是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<String> list = Arrays.asList("Hello", "World");
            List<String> 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区别

          本文链接:https://www.haomeiwen.com/subject/qksmxctx.html