Java8 Stream流 flatMap使用

news2024/9/24 19:22:55

参考链接

import cn.hutool.core.collection.ListUtil;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class FlatMapLearn {
    @Data
    @AllArgsConstructor
    public static class User {
        /** 姓名 */
        private String name;

        /** 权限 */
        private List<String> permissionList;
    }

    public static void main(String[] args) {
        // 创建5个用户
        List<User> users = new ArrayList<>();
        users.add(new User("Alice", ListUtil.of("A", "B", "C")));
        users.add(new User("Bob", ListUtil.of("B", "C", "D")));
        users.add(new User("Charlie", ListUtil.of("C", "D", "E")));
        users.add(new User("David", ListUtil.of("D", "E", "F")));
        users.add(new User("Eve", ListUtil.of("E", "F", "G")));

        // 使用map获取
        List<String> list = new ArrayList<>();
        users.stream().map(User::getPermissionList).forEach(l -> {
            l.stream().forEach(str -> {
                if (!list.contains(str)) {
                    list.add(str);
                }
            });
        });
        System.out.println(list);


        // 使用map和flatmap获取他们所有的权限
        List<String> allPermissions = users.stream()
                .flatMap(user -> user.getPermissionList().stream())
                .distinct()
                .collect(Collectors.toList());

        // 输出结果
        System.out.println(allPermissions);
    }
}

flatMap作用是将多个list平铺为一个流进行处理,通过idea的流debug也可以直观的看到结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/922200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)

.a/.framework其实是把编译生成的.o文件&#xff0c;打包成一个.a/.framework文件。a的意思是archive/归档的意思。 查看静态库.a文件包含的内容用下面的命令解压&#xff1a; ar x xxx.a 用ar命令打包静态库&#xff1a; 参数r是将后面的*.o或者*.a文件添加到目标文件中 参数…

赴日工作SaaS/PaaS/IaaS到底有什么区别?

许多开始关注赴日IT的技术流的小伙伴&#xff0c;已经开始关注外网上的一些案件需求或者招聘需求了。那么你会发现很多需求当中都写着开发SaaS/PaaS/IaaS这些词汇&#xff0c;而且出现频率很高&#xff0c;那他们究竟代表什么意思呢&#xff1f; 先来说SaaS&#xff0c;Softwa…

此股必成大器!【海螺水泥】坚定看好-神奇指标网

8.22此股必成大器&#xff01;【海螺水泥】坚定看好 操盘胜率极高的神奇指标系统已经给出了答案&#xff0c;苦等几日今天终于发出多头信号。 从7月底开始&#xff0c;神奇指标叠线重合并且股价站上叠线上&#xff0c;第二个交易日直接跳空高开&#xff0c;预示多头行情的开始。…

年薪100W的PM如何制定项目进度计划?

大家好&#xff0c;我是老原。 做了这么久的项目经理&#xff0c;也带过很多项目&#xff0c;无论是他人估算还是自己预测&#xff0c;都很少有按期完成的项目&#xff0c;要么提前&#xff0c;要么延后&#xff0c;按期完成的无非是熟门熟路十拿九稳&#xff0c;亦或是运气使…

KusionStack使用文档

下载安装 1. 安装 Kusionup 如果想自定义默认安装版本&#xff0c;可以运行下述命令&#xff08;将最后的 openlatest 替换为你想要默认安装的版本号就就行&#xff09;&#xff1a; curl -s "http://kusion-public.oss-cn-hzfinance.aliyuncs.com/cli/kusionup/script…

spark中排查Premature EOF: no length prefix available

报错信息 /07/22 10:20:28 WARN DFSClient: Error Recovery for block BP-888461729-172.16.34.148-1397820377004:blk_15089246483_16183344527 in pipeline 172.16.34.64:50010, 172.16.34.223:50010: bad datanode 172.16.34.64:50010 [DataStreamer for file /bdp/data/u9…

java学习-阻塞队列原理

JAVA 阻塞队列原理 阻塞队列&#xff0c;关键字是阻塞&#xff0c;先理解阻塞的含义&#xff0c;在阻塞队列中&#xff0c;线程阻塞有这样的两种情况&#xff1a; 当队列中没有数据的情况下&#xff0c;消费者端的所有线程都会被自动阻塞&#xff08;挂起&#xff09;&#x…

Linux的软连接和硬链接

1.创建链接 首先ln --help 可以看到默认创建的链接是硬链接。若是要创建符号链接则需要使用-s 参数 格式是&#xff1a; ln 源文件 链接文件 或者 ln -s 源文件 链接文件 2.区别 首先我创建了a和b文件。 然后又分别建立了a的硬链接a2&#xff0c;b的符号链接b2 由图中即可看…

角色属性04----HP

添加两个变量&#xff0c;使用任意伤害事件来扣除HP&#xff0c;蓝图的方式和加速跑差不多 找到一个死亡动画&#xff0c;先ue4重定向ue5小银人&#xff0c;在ue5重定向ue4给低模人物 进入动画&#xff0c;创建hit把死亡动画给它&#xff0c;同时创建一个变量is_hit作为状态转换…

全国最大规模量子计算云平台重磅发布

8月19日&#xff0c;在2023中国算力大会主论坛上&#xff0c;中国移动携手中国电科发布“量子计算云平台”。这是目前国内最大规模的量子计算云平台&#xff0c;也是业界第一次实现“量子与通用算力统一纳管混合调度”的系统级平台。该发布标志着我国量子计算正在逐步走向实用化…

不要再错过晓程科技【300139】了-神奇指标网

8.24不要再错过晓程科技【300139】了 虽然 晓程科技的庄家操盘不怎么的&#xff0c;经常诱多发套吸筹。但是通过神奇指标系统来操盘基本可以完美吃到这几波冲高。包括今天一开盘就入场了&#xff0c;明天有调整的话看情况还可以低吸一口也是稳的。 我们看到今天5月到至今在这个…

服务器数据恢复-AIX PV完整镜像方法以及误删LV的数据恢复方案

AIX中的PV相当于物理磁盘&#xff08;针对于存储来说&#xff0c;PV相当于存储映射过来的卷&#xff1b;针对操作系统来说&#xff0c;PV相当于物理硬盘&#xff09;&#xff0c;若干个PV组成一个VG&#xff0c;AIX可以将容量不同的存储空间组合起来统一分配。AIX把同一个VG的所…

【安装】MongoDB7安装MongoSH命令

MongoDB Shell Download | MongoDB 下载之后 解压 配置环境变量即可 以前使用 mongo命令 改为 mongosh 官方说明 安装mongosh MongoDB 中文手册 | MongoD Manual | 中文操作手册 | MongoDB 最新版 (whaleal.com) 安装 mongosh — MongoDB Shell

suricata安装以及流量抓包

suricata安装 先安装wazuh的agent上篇博客有提到。Wazuh安装及使用_无所不知的神奇海螺的博客-CSDN博客 与wazuh联动&#xff0c;所以查看wazuh官方文档Network IDS integration - Proof of Concept guide Wazuh documentation 配置要求 跟着配置一步步走就行 到这一步&am…

主力资金指标公式-神奇指标网

主力资金&#xff1a; VA1:100-3*SMA((CLOSE-LLV(LOW,65))/(HHV(HIGH,80)-LLV(LOW,65))*100,20,1)2*SMA(SMA((CLOSE-LLV(LOW,65))/(HHV(HIGH,80)-LLV(LOW,65))*100,20,1),15,1); VARA:EMA(VAR9,3); VARB:(VAR9-VARA)/2; 大盘资金:VARB,COLORGREEN,LINETHICK2; …

聚水潭无需API开发连接伙伴云,实现新增售后申请单自动汇总到表单

聚水潭用户使用场景&#xff1a; 电商行业通常使用聚水潭作为企业的ERP系统。每当聚水潭有新的售后申请时&#xff0c;企业人员常常需要将订单信息手动复制并录入到伙伴云存储、汇总&#xff0c;包括订单单号、状态、金额等20多项信息。这种人工手动复制和录入的方式容易导致订…

vue直接使用高德api

第一步&#xff1a;在index.html 引入 <script src"https://webapi.amap.com/maps?v2.0&key你的key"></script>第二步&#xff1a;在你需要地图的时候 放入 <template><div style"width: 200px; height: 200px"><div id&q…

浅谈电力电容器的在线监测技术与选型

安科瑞 华楠 【摘要】传统的电力电容器检测通常为断电,离线进行,影响了生产。已有的电力电容器在线诊断技术集中于对电容量、介质损耗角的测量,检测结果滞后于故障的发生,且检测结果并不理想。主要针对电力系统中高压电力电容器的常见故障,对其故障中发生放电现象的机理进行了…

【腾讯云 Cloud studio 实战训练营】基于Claude快速完成Excel工资自动核算

目录 1 什么是Cloud Studio&#xff1f;2 注册与代码管理2.1 账号注册2.2 Git关联 3 实战&#xff1a;Excel工资自动核算3.1 创建项目与配置3.2 “念咒师”Claude GPT3.3 代码编写与运行 4 个人开发感受 1 什么是Cloud Studio&#xff1f; Cloud Studio是腾讯云为开发者提供的…

超越界限:大模型应用领域扩展,探索文本分类、文本匹配、信息抽取和性格测试等多领域应用

超越界限&#xff1a;大模型应用领域扩展&#xff0c;探索文本分类、文本匹配、信息抽取和性格测试等多领域应用 随着 ChatGPT 和 GPT-4 等强大生成模型出现&#xff0c;自然语言处理任务方式正在逐步发生改变。鉴于大模型强大的任务处理能力&#xff0c;未来我们或将不再为每…