Java Stream 流常用操作大全

ops/2024/11/14 7:55:39/

文章目录

  • 1. 逗号分隔的字符串转 List
    • (1)转 `List<String>`
    • (2)转 `List<Long>`
  • 2. map 元素映射
  • 3. filter 元素过滤
  • 4. findFirst 查找首个元素
    • (1)查找 filter 过滤后的首个元素
  • 5. groupingBy 分组
    • (1)单个字段分组
    • (2)单个字段分组-统计数量
    • (3)多字段分组
    • (4)多字段分组-统计数量


1. 逗号分隔的字符串转 List

(1)转 List<String>

String str = "1,2,3,4,5,6";
List<String> list = Arrays.stream(str.split(",")).map(String::trim).collect(Collectors.toList());

(2)转 List<Long>

String str = "1,2,3,4,5,6";
List<Long> list = Arrays.stream(str.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());

2. map 元素映射

List<String> usernameList = records.stream().map(SysUser::getUsername()).collect(Collectors.toList());

3. filter 元素过滤

List<SysUser> sysUserList = records.stream().filter(x -> StrUtil.equals(x.getUsername(), "taibai")).collect(Collectors.toList());

4. findFirst 查找首个元素

(1)查找 filter 过滤后的首个元素

SysUser sysUser = records.stream().filter(x -> StrUtil.equals(x.getUsername(), "taibai")).findFirst().orElse(null);

5. groupingBy 分组

(1)单个字段分组

Map<String, SysUser> countMap = records.stream().collect(Collectors.groupingBy(SysUser::getDeptId()));

(2)单个字段分组-统计数量

Map<String, Long> countMap = records.stream().collect(Collectors.groupingBy(SysUser::getDeptId(), Collectors.counting()));

(3)多字段分组

Map<String, SysUser> countMap = records.stream().collect(Collectors.groupingBy(x -> x.getDeptId() + "_" + x.getRoleId()));

(4)多字段分组-统计数量

Map<String, Long> countMap = records.stream().collect(Collectors.groupingBy(x -> x.getProductType() + "_" + x.getCountry(), Collectors.counting()));


http://www.ppmy.cn/ops/132497.html

相关文章

猿创征文|Inscode桌面IDE:打造高效开发新体验

猿创征文&#xff5c;Inscode桌面IDE&#xff1a;打造高效开发新体验 引言 在当今快速发展的软件开发领域&#xff0c;一个高效、易用的集成开发环境&#xff08;IDE&#xff09;是每个开发者必不可少的工具。Inscode 桌面 IDE 作为一款新兴的开发工具&#xff0c;凭借其强大…

计算机网络socket编程(1)_UDP网络编程实现echo server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(1)_UDP网络编程实现echo server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交…

OpenCV C++ 计算两幅图像之间的多尺度结构相似性(MSSIM)

目录 一、定义与背景 二、计算流程 三、性质与特点 四、应用场景 五、代码实现 多尺度结构相似性(MSSIM)是一种用于衡量两幅图像之间相似度的指标,它基于结构相似性(SSIM)指数进行扩展,通过在不同尺度上计算SSIM来评估图像的整体质量。以下是对MSSIM的详细介…

【数据集】【YOLO】【目标检测】水面船只识别数据集 9798 张,YOLO船只识别算法实战训练教程!

一、数据集介绍 【数据集】水面船只识别数据集 9798 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。 数据集中包含1种分类&#xff1a;{0: ship}&#xff0c;代表水面船只。 数据集来自国内外图片网站和视频截图&#xff1b; 可用于无人机船只检测、监控灯塔船…

JavaWeb——Web入门(7/9)-Tomcat-介绍(Tomcat 的简介:轻量级Web服务器,支持Servlet/JSP少量JavaEE规范)

目录 Web服务器的作用 三个方面的讲解 Tomcat 的简介 小结 Web服务器的作用 封装 HTTP 协议操作&#xff1a;Web服务器是一个软件程序&#xff0c;对 HTTP 协议的操作进行了封装。这样开发人员就不需要再直接去操作 HTTP 协议&#xff0c;使得外部应用程序的开发更加便捷、…

ctfshow(328)--XSS漏洞--存储型XSS

Web328 简单阅读一下页面。 是一个登录系统&#xff0c;存在一个用户管理数据库。 那么我们注册一个账号&#xff0c;在账号或者密码中植入HTML恶意代码&#xff0c;当管理员访问用户管理数据库页面时&#xff0c;就会触发我们的恶意代码。 思路 我们向数据库中写入盗取管理员…

第四期书生大模型实战营(【基础岛】- 第2关 | 玩转书生「多模态对话」与「AI搜索」产品)

文章目录 1. 任务介绍[玩转书生「多模态对话」与「AI搜索」产品 - 任务](https://github.com/InternLM/Tutorial/blob/camp4/docs/L1/InternIntro/tasks.md)1.1. 基础任务 (完成此任务即完成闯关)1.2. 进阶任务 (优秀学员需要完成)1.3. 闯关材料提交 (完成材料提交视为闯关成功…

clickhouse自增id的处理

msyql 中创建数据表的时候可以通过AUTO_INCREMENT 来实现&#xff0c;clickhouse中可以通过其他方式来处理 一、 默认值 创建表时可以实用默认值&#xff0c;该列值可以自动递增。如下所示 CREATE TABLE my_table ( id UInt32 DEFAULT IDENTITY(AUTO_INCREMENT), name Strin…