List stream的9种常用功能

1、List 转List

List llla = Arrays.asList("1","2").stream().map(Long::parseLong).collect(Collectors.toList());

2、List转类型List、List、List

//(1)、List中的String属性转List

List userNameList = list.stream().map(UserInfo::getUserName).collect(Collectors.toList());

//过滤null

List userNameList1 = list.stream().map(UserInfo::getUserName).filter(Objects::nonNull).collect(Collectors.toList());

//(2)、List中的Integer属性转List

List userIds = list.stream().map(UserInfo::getAmount).map(String::valueOf).collect(Collectors.toList());

//过滤null

List userIds1 = list.stream().map(UserInfo::getAmount).filter(Objects::nonNull).map(String::valueOf).collect(Collectors.toList());

//List属性转List ,如果为 null就为0

List aountList1 = list.stream().map(i -> i.getAmount() == null ? 0 : i.getAmount()).collect(Collectors.toList());

//(3)、List属性求和

// long sum = list.stream().mapToInt(UserInfo::getAmount).sum();

//如果为 null就为0

long sum1 = list.stream().mapToInt(i -> i.getAmount() == null ? 0 : i.getAmount()).sum();

3、List转map

//(1)、List转Map<String,Bean> key重复会报错
// Map<Long, UserInfo> map1 = list.stream().collect(Collectors.toMap(UserInfo::getUserId, i -> i));
//(2)、list bean 中某两个属性 转 map (k1,k2)->k2) 表示如果key相同以后面那个覆盖前面的 。必须对value的null进行处理,因为value为null会报错
Map<Long, String> map = list.stream().collect(Collectors.toMap(UserInfo::getUserId, i -> i.getUserName() == null ? "null" : i.getUserName(), (k1, k2) -> k2));

4、分组

//List分组

// Map<Long, List> collect = list.stream().collect(Collectors.groupingBy(UserInfo::getUserId));

//List分组,null为0

Map<Long, List> collect = list.stream().collect(Collectors.groupingBy(i -> i.getUserId() == null ? 0 : i.getUserId()));

//List分组统计,相当于数据库 select name,count(*)... group by name

Map<Long, Long> collect1 = list.stream().collect(Collectors.groupingBy(i -> i.getUserId() == null ? 0 : i.getUserId(), Collectors.counting()));

log.info("=======" + (collect1));
5、limit

List collect2 = list.stream().limit(1).collect(Collectors.toList());
6、排序

List l3 = list.stream().sorted((s1, s2) -> s2.getAge().compareTo(s1.getAge())).collect(Collectors.toList());
7、判断年龄大于2

boolean check = list.stream().anyMatch(student -> student.getAge() > 2);
8、list拼接成字符串

String str = list.stream().map(UserInfo::getUserName).collect(Collectors.joining(",", "[", "]"));
9、获取年龄的最大值、最小值、平均值、求和等等

IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(UserInfo::getAge).summaryStatistics();

System.out.println(intSummaryStatistics.getMax());

System.out.println(intSummaryStatistics.getCount());

System.out.println(intSummaryStatistics.getSum());

相关推荐
Deng8723473487 小时前
代码语法检查工具
linux·服务器·windows
Halo_tjn8 小时前
虚拟机相关实验概述
java·开发语言·windows·计算机
programer_3310 小时前
本地手动创建一个MCP(windows环境)
windows·python·ai·mcp·cherry studio
曹牧11 小时前
Java:List<Map<String, String>>转换为字符串
java·开发语言·windows
BIBI204912 小时前
Windows 下 Git 常规操作教程:命令行与 TortoiseGit
windows·git·tortoisegit·配置·版本控制·入门指南
fushan201213 小时前
Windows 虚拟机配置与驱动安装记录
windows·k8s·vm·kubevirt
一瞬祈望13 小时前
【环境配置】Windows 下使用 Anaconda 创建 Python 3.8 环境 + 安装 PyTorch + CUDA(完整教程)
pytorch·windows·python
jnrjian13 小时前
Hash index initrans 的修改及 partition的增
数据库·oracle
曹牧14 小时前
Java String[] 数组的 contains
java·开发语言·windows
Hotakus14 小时前
手柄也能辅助绘画与办公 XialloControl 新的手柄映射键鼠软件
windows·开源·github·开源软件·个人开发