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());

相关推荐
Hello_Pyhx4 小时前
iPhoneMirror:把 iPhone 接入 Windows,先分清投屏与反控
windows·ios·iphone
许彰午12 小时前
01-Oracle数据库简介与版本选择
数据库·oracle
kakakahahahaha13 小时前
Win10开始菜单打不开排查:explorer、AppX注册、SFC、服务与用户配置修复
windows·电脑·笔记本电脑·内容运营·软件需求
ITHAOGE1514 小时前
下载 | Windows Server 2016最新纯净版ISO映像!(集成9月更新、标准版、数据中心版、14393.9514)
windows·科技·微软·电脑
可乐ea16 小时前
Agent 评测换判据:用终态数据库状态判定任务是否完成
数据库·ui·oracle·mcp工具·agent评测·终态断言·智能体可靠性
程序员清风18 小时前
CSV、Excel 与数据库数据读取实践
数据库·oracle·excel
传奇开心果编程20 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
懒人821 小时前
Windows11系统优化指南
windows·经验分享
Vex2une21 小时前
Windows 磁盘管理发展史:从 FDISK 分区表到存储池与虚拟磁盘
windows·gpt·磁盘管理·mbr·fdisk·动态磁盘·储存池
今夕资源网21 小时前
从夯到拉模拟器RankPix windows本地版 exe
windows·exe·从夯到拉·从夯到拉模拟器·rankpix·本地版