Java Stream 流常用操作大全

文章目录

  • [1. 逗号分隔的字符串转 List](#1. 逗号分隔的字符串转 List)
    • [(1)转 `List<String>`](#(1)转 List<String>)
    • [(2)转 `List<Long>`](#(2)转 List<Long>)
  • [2. map 元素映射](#2. map 元素映射)
  • [3. filter 元素过滤](#3. filter 元素过滤)
  • [4. findFirst 查找首个元素](#4. findFirst 查找首个元素)
    • [(1)查找 filter 过滤后的首个元素](#(1)查找 filter 过滤后的首个元素)
  • [5. groupingBy 分组](#5. groupingBy 分组)

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

(1)转 List<String>

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

(2)转 List<Long>

java 复制代码
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 元素映射

java 复制代码
List<String> usernameList = records.stream()
		.map(SysUser::getUsername())
		.collect(Collectors.toList());

3. filter 元素过滤

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

4. findFirst 查找首个元素

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

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

5. groupingBy 分组

(1)单个字段分组

java 复制代码
Map<String, SysUser> countMap = records.stream()
		.collect(Collectors.groupingBy(SysUser::getDeptId()));

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

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

(3)多字段分组

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

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

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

相关推荐
鱼宵5 天前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作
鱼宵5 天前
CSV 怎么做销售报表?Stream 第 9 课:读洗聚排打五段管道一次跑通
java·报表·stream
\光辉岁月/11 天前
javaSE8-新特性-Stream&Option
java·stream·option
\光辉岁月/18 天前
14.JavaSE-IOStream
java·io·stream
Nebula_g25 天前
JavaSE加强:IO流
java·开发语言·windows·stream·javase
Nebula_g25 天前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
AI人工智能+电脑小能手1 个月前
Java 企业级工具类全家桶-48-分组聚合工具类
stream·jdk 17·java工具类·map集合·空值安全·分组聚合·计数求和
Luchang-Li1 个月前
CUDA stream创建和依赖,多流并行
stream·cuda·并行
带刺的坐椅2 个月前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·stream·event·solon-ai
AI人工智能+电脑小能手2 个月前
大白话说Java设计模式-38-迭代器模式(业务实战篇)
java·设计模式·迭代器模式·stream·遍历封装·集合通用·分页遍历