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

相关推荐
努力也学不会java6 小时前
【设计模式】抽象工厂模式
java·设计模式·oracle·抽象工厂模式
凯子坚持 c7 小时前
精通 Redis list:使用 redis-plus-plus 的现代 C++ 实践深度解析
c++·redis·list
路由侠内网穿透9 小时前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
第七序章10 小时前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
研华嵌入式16 小时前
如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?
arm开发·windows·嵌入式硬件
带娃的IT创业者21 小时前
Windows 平台上基于 MCP 构建“文心一言+彩云天气”服务实战
人工智能·windows·文心一言·mcp
csdn_aspnet1 天前
Windows Node.js 安装及环境配置详细教程
windows·node.js
摇滚侠1 天前
java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
java·windows·list
Source.Liu1 天前
【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
windows·python·自动化
Source.Liu1 天前
【Pywinauto库】12.1 pywinauto.backend 后端内部实施模块
开发语言·windows·python·自动化