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()// 去重

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

相关推荐
云姜.2 分钟前
java抽象类和接口
java·开发语言
带刺的坐椅2 分钟前
Claude Code Skills,Google A2A Skills,Solon AI Skills 有什么区别?
java·ai·solon·a2a·claudecode·skills
仙剑魔尊重楼9 分钟前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
爱学英语的程序员14 分钟前
面试官:你了解过哪些数据库?
java·数据库·spring boot·sql·mysql·mybatis
PHP小志38 分钟前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows
callJJ1 小时前
Spring AI 文本聊天模型完全指南:ChatModel 与 ChatClient
java·大数据·人工智能·spring·spring ai·聊天模型
CBeann1 小时前
企业级规则引擎落地实战:动态脚本引擎 QLExpress ,真香!
java·ai·大模型·规则引擎·qlexpress·大厂实战项目
懈尘1 小时前
从 Java 1.7 到 Java 21:逐版本深入解析新特性与平台演进
java·开发语言
亓才孓1 小时前
[Maven]Maven基础
java·maven
hello 早上好1 小时前
05_Java 类加载过程
java·开发语言