JAVA stream().flatMap()

简单来说map 是对每一个元素单独处理后单独存放,flatMap 是把每个元素转换成流之后合并成一个流然后这个被合并的流可以再被处理

比如如果你想要把一个类中的tags去重并筛选中不是"技术"的标签你就可以使用flatMap

复制代码
public static void main(String[] args) throws Exception {
    class User {
        private String name;
        private List<String> tags;

        public User(String name, List<String> tags) {
            this.name = name;
            this.tags = tags;
        }

        public List<String> getTags() { return tags; }
    }
    List<User> users = Arrays.asList(
            new User("张三", Arrays.asList("技术", "音乐")),
            new User("李四", Arrays.asList("旅行", "技术")),
            new User("王五", Arrays.asList("美食", "旅行"))
    );

    List<String> allTags = users.stream()
            .flatMap(user -> user.getTags().stream()) // 流合并
            .filter(s->!s.contains("技术")) //判断
            .distinct()// 去重
            .collect(Collectors.toList());
    System.out.println(allTags);

}

这样可以一步到位,避免了,先提取,然后去重,然后判断。

这里的user.getTags().stream()如果使用的是map()那么会报错,因为map是直接处理完之后送入集合,现在user.getTags().stream()并不是一个String类型的所以会报错。

flatMap是利用user.getTags().stream()把所有的元素处理并总和成一个流,然后使用

.filter(s->!s.contains("技术")) //判断 .distinct()// 去重

去处理之后再送入集合中去

相关推荐
DKunYu8 小时前
1.多线程初阶
java·开发语言
尤利乌斯.X8 小时前
在Java中调用MATLAB函数的完整流程:从打包-jar-到服务器部署
java·服务器·python·matlab·ci/cd·jar·个人开发
spencer_tseng8 小时前
easy-captcha-1.6.2.jar
java·jar
love530love8 小时前
【笔记】xFormers版本与PyTorch、CUDA对应关系及正确安装方法详解
人工智能·pytorch·windows·笔记·python·深度学习·xformers
旭编8 小时前
牛客周赛 Round 117
java·开发语言
无敌最俊朗@9 小时前
01-总结
java·jvm·数据库
华仔啊9 小时前
MyBatis-Plus 让你开发效率翻倍!新手也能5分钟上手!
java·后端·mybatis
武子康9 小时前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j
乌暮9 小时前
JavaEE入门--计算机是怎么工作的
java·后端·java-ee
Z3r4y9 小时前
【代码审计】RuoYi-4.2 五处安全问题分析
java·web安全·代码审计·若依4.2·ruoyi-4.2