IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java8 stream Collectors(收集)操作合集 -> 正文阅读

[Java知识库]java8 stream Collectors(收集)操作合集

  1. 分组操作:Collectors.groupingBy()
// 测试数据,请不要纠结数据的严谨性
List<TestVO> list = new ArrayList<>();
list.add(new TestVO(1,"李小明",18));
list.add(new TestVO(2,"李小明",19));
list.add(new TestVO(3,"王大朋",16));
list.add(new TestVO(4,"陈小跑",10));

// 分组并求count(counting方法返回所收集元素的总数)
Map<Integer, Long> sexCount = list.stream().collect(Collectors.groupingBy(TestVO::getName,Collectors.counting()));

// 分组并求sum(summing方法会对元素求和)
Map<Integer, Integer> ageCount = list.stream().collect(Collectors.groupingBy(TestVO::getName,Collectors.summingInt(TestVO::getAge)));

// 分组并求最大、最小值 (maxBy和minBy会接受一个比较器,求最大值,最小值)
Map<Integer, Optional<User>> ageMax =  list.stream().collect(Collectors.groupingBy(TestVO::getName,Collectors.maxBy(Comparator.comparing(TestVO::getAge))));

// 如果想一次操作直接完成求和、求count、求最大、求最小也可以(Collectors.summarizing(Int/Long/Double)就是为你准备的,它可以一次行获取前面的所有结果,其返回值为(Int/Long/Double)SummaryStatistics)
DoubleSummaryStatistics dss = list.stream().collect(Collectors.summarizingDouble((TestVOp)->p.age));
double average=dss.getAverage();
double max=dss.getMax();
double min=dss.getMin();
double sum=dss.getSum();
double count=dss.getCount();

// 分组并取只取对象中某一个元素集合(mapping函数会应用到downstream结果上,并需要和其他函数配合使用)
Map<Integer, List<String>> nameMap =  list.stream().collect(Collectors.groupingBy(TestVO::getName,Collectors.mapping(TestVO::getName,Collectors.toList())));
  1. 转Map操作:Collectors.toMap()
// 测试数据,请不要纠结数据的严谨性
List<TestVO> list = new ArrayList<>();
list.add(new TestVO(1,"李小明",18));
list.add(new TestVO(2,"李小明",19));
list.add(new TestVO(3,"王大朋",16));
list.add(new TestVO(4,"陈小跑",10));

// 转map
Map<Integer, Long> sexCount = list.stream().collect(Collectors.toMap(TestVO::getName,TestVO::getAge, (v1, v2) -> v1));

// 转value为对象的map
Map<Integer, Long> sexCount = list.stream().collect(Collectors.toMap(TestVO::getName,testVO -> testVO, (v1, v2) -> v1));

// 在转换成List
List<Param> paramList = map.keySet().stream()
                                    .map(key -> {
                                        Param param= new Param();
                                        param.setCmd(key);
                                        param.setParam(idAndAgeMap .get(key));
                                        return param;
                                     })
                                   .collect(Collectors.toList());

3.一些常见的就不总结了之前文章中总结过。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:49:43  更:2022-03-31 23:51:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:47:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码