废话不多说所直接上代码

1. 只对某个属性分组 (personsList为存储实体类的集合)

group by age

 Map<Integer,List<Person>> map = personsList.stream().collect(Collectors.groupingBy(Person::getAge));

结果:

2.先分组,再获取所有聚合统计的参数
Map<Integer, DoubleSummaryStatistics> collect = persons.stream().collect(Collectors.groupingBy(Person::getAge,Collectors.summarizingDouble(Person::getSalary)));

结果:

3.先分组,然后对工资聚合

sum(salary)
group by age

Map<Integer, Double> collect1 = persons.stream().collect(Collectors.groupingBy(Person::getAge, Collectors.summingDouble(Person::getSalary)));

结果:

整体代码总体如下:

import java.util.*;
import java.util.stream.Collectors;public class Test {public static void main(String[] args) {List<Person> persons = new ArrayList<>();persons.add(new Person("Brandon", 15, 5000));persons.add(new Person("Braney", 15, 15000));persons.add(new Person("Jack", 10, 5000));persons.add(new Person("Robin", 10, 500000));persons.add(new Person("Tony", 10, 1400000));// 只对 age 分组Map<Integer,List<Person>> map = persons.stream().collect(Collectors.groupingBy(Person::getAge));for (Map.Entry<Integer, List<Person>> entry : map.entrySet()) {System.out.println("分组" +entry);}System.out.println("=======================");// 对age分组 然后取所有的聚合结果集Map<Integer, DoubleSummaryStatistics> collect = persons.stream().collect(Collectors.groupingBy(Person::getAge,Collectors.summarizingDouble(Person::getSalary)));for (Map.Entry<Integer, DoubleSummaryStatistics> entry : collect.entrySet()) {DoubleSummaryStatistics longSummaryStatistics = entry.getValue();System.out.println("----------------key----------------" + entry.getKey());System.out.println("求和:" + longSummaryStatistics.getSum());System.out.println("求平均" + longSummaryStatistics.getAverage());System.out.println("求最大:" + longSummaryStatistics.getMax());System.out.println("求最小:" + longSummaryStatistics.getMin());System.out.println("求总数:" + longSummaryStatistics.getCount());}System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");// 对age分组 然后取求和结果集Map<Integer, Double> collect1 = persons.stream().collect(Collectors.groupingBy(Person::getAge, Collectors.summingDouble(Person::getSalary)));System.out.println(collect1);System.out.println("1");}
}

结果:

分组10=[Person [name=Jack, age=10, salary=5000.0], Person [name=Robin, age=10, salary=500000.0], Person [name=Tony, age=10, salary=1400000.0]]
分组15=[Person [name=Brandon, age=15, salary=5000.0], Person [name=Braney, age=15, salary=15000.0]]
=======================
----------------key----------------10
求和:1905000.0
求平均635000.0
求最大:1400000.0
求最小:5000.0
求总数:3
----------------key----------------15
求和:20000.0
求平均10000.0
求最大:15000.0
求最小:5000.0
求总数:2
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{10=1905000.0, 15=20000.0}
1

实体类

/*** 要聚合的实体类/
class Person {private String name;private int age;private double salary;public Person(String name, int age, double salary) {super();this.name = name;this.age = age;this.salary = salary;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public String getNameAndAge() {return this.getName() + "-" + this.getAge();}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", salary=" + salary+ "]";}
}

java list分组聚合相关推荐

  1. Java调用ElasticSearch 7.2.1 保存、统计、多字段分组聚合

    目录 maven引用 配置 配置类 保存数据方法 参照官方的引用方式会报错 分组统计 查询后再统计 多字段分组聚合 maven引用 注意版本与es版本一致 <dependency>< ...

  2. Elasticsearch Java API 的使用(13)—分组聚合之一

    分组聚和不像度量聚合那样通过字段进行计算,而是根据文档创建分组.每个聚合都关联一个标准(取决于聚合的类型),决定了一个文档在当前的条件下是否会"划入"分组中. 换句话说,分组实际上 ...

  3. Elasticsearch Java API 分组、聚合、嵌套相关查询

    Elasticsearch Java API 分组.聚合.嵌套相关查询 翼支付监控系统正使用es做后端存储,这边我们是将日志计算处理过后的数据通过kafka储存到es.选择用es作为数据储存端是考虑到 ...

  4. php 聚合和组合,reduce端连接-分区分组聚合(示例代码)

    1.1.1         reduce端连接-分区分组聚合 reduce端连接则是利用了reduce的分区功能将stationid相同的分到同一个分区,在利用reduce的分组聚合功能,将同一个st ...

  5. pandas php,pandas分组聚合代码详解

    pandas分组聚合代码详解 本篇文章小编给大家分享一下pandas分组聚合代码详解,对大家学习pandas分组聚合有一定的帮助,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看 ...

  6. MongoDB多条件分组聚合查询

    MongoDB多条件分组聚合查询 1.样例数据 {"_id" : ObjectId("5fa13fb76c3107345a82c047"),"_cla ...

  7. 最详细最直观的>>>理解Pandas分组聚合和透视图标

    写在前面: 突然打开excel看到透视图表, 瞬间理解了pandas中的分组聚合和透视图标的内容.分享给大家,希望给在学习路上的伙伴们少点疑虑. 分组聚合 首先, 创建我们需要的数据 df = pd. ...

  8. Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能

    目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...

  9. Python数据清洗小技巧——分组聚合

    分组聚合 分组 groupby原理 import numpy as np import pandas as pddf = pd.DataFrame(data = {'sex':np.random.ra ...

最新文章

  1. 如何解决数据一致性、任务调度、流水号生成等问题?
  2. c和python的区别动图_C语言与Python 对程序员的差别到底在哪?
  3. 【C++基础】常见面试问题(二)
  4. FormsAuthenticationTicket基于forms的验证
  5. linux环境部署python3+django
  6. nginx php 没认,NginX没有执行PHP
  7. 《微信生活白皮书》发布微信用户数据
  8. HiJson工具 火狐浏览器中的jsonHandle插件(以及乱码问题的解决)--来转换json串的格式
  9. 【黑灰产犯罪研究】恶意点击
  10. 机器学习之理解支持向量机SVM
  11. PADS输出BOM表和位号图(装配图)
  12. 单元测试、注解、枚举、反射(5)JavaSE
  13. 计算机公共基础知识总结,计算机公共基础知识总结.docx
  14. 严恭敏老师PSINS工具箱解读——test_SINS_GPS_153
  15. (转载)Java反射机制
  16. 打算抽时间自学一下游戏制作,做一款Mud文字游戏
  17. ArcGIS制图及出图小技巧——以土地利用图为例
  18. iOS游戏开发:从创意到实现
  19. 操作SVN的SHELL
  20. java计算机毕业设计ssm教师贴心宝的设计与实现

热门文章

  1. 免费mp3音乐文件上传外链空间精选合辑
  2. R语言:接受拒绝法(Acceptance-Rejection Method)生成随机数
  3. POJ 3666 dp
  4. 微软tfs项目管理工具_使用微软的TFS云服务来管理小型项目
  5. 一.Redis入门指南总结--认识Redis
  6. 《大数据管理概论》一2.2 大数据融合的概念
  7. 记录token的作用
  8. PLSQL如何查看建表语句
  9. mbp安装steam显示“steam_osx”已损坏,mac安装steam方法
  10. gs 标准不变的前提应变