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

相关推荐
yufei-coder4 小时前
掌握 C# 中的 LINQ(语言集成查询)
windows·vscode·c#·visual studio
bug菌¹6 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人6 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky6 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
立秋67897 小时前
Python的defaultdict详解
服务器·windows·python
Indigo_code8 小时前
【数据结构】【链表代码】合并有序链表
数据结构·windows·链表
暮雪倾风8 小时前
【WPF开发】超级详细的“文件选择”(附带示例工程)
windows·wpf
全栈师8 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
bug菌¹9 小时前
滚雪球学Oracle[6.2讲]:Data Guard与灾难恢复
数据库·oracle·data·灾难恢复·guard
何中应10 小时前
如何使用CMD命令启动应用程序(二)
windows·桌面应用·batch命令