场景:

Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map

1.对集合按照单个属性分组

e.g. 按照skuId分组

Map> detailsMap01 = dtos1.stream()

.collect(Collectors.groupingBy(EntryDeliveryDetailywk::getskuId));

1

2

2对集合按照多个属性分组

solution 1 多个属性拼接出一个组合属性

将多个字段拼接成一个新字段,在使用Java8的groupBy进行分组

Map> detailmap = details.stream()

.collect(Collectors.groupingBy(d -> fetchGroupKey(d) ));

private String fetchGroupKey(EntryDeliveryDetailywk detail){

return detail.getSkuId().toString()

+ detail.getItemsName()

+ detail.getWarehouseId().toString()

+ detail.getSupplierId().toString();

}

solution 2 造静态内部类

在集合元素类里构造静态内部类(成员变量即分组的对应多个属性)

e.g.

//静态内部类

class Person {

public static class NameAge {

public NameAge(String name, int age) {

...

}

// 注意 重写方法 must implement equals and hash function

}

public NameAge getNameAge() {

return new NameAge(name, age);

}

}

//分组

Map> map = people.collect(Collectors.groupingBy(Person::getNameAge));

solution 3 嵌套调用Java8 groupby

注意得到也是嵌套map

Map>> map = people

.collect(Collectors.groupingBy(Person::getName,

Collectors.groupingBy(Person::getAge));

//调用

map.get("Fred").get(18);

参考

https://stackoverflow.com/questions/28342814/group-by-multiple-field-names-in-java-8#

groupby java_Java8的groupBy实现集合的分组相关推荐

  1. java groupbyu_Java8的groupBy实现集合的分组

    场景: Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map 1.对集合按照单个属性分组 e.g. 按照skuId分组 Map> detai ...

  2. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均(Exponential Moving Average).例如,计算某公司的多个店铺每N天(5 ...

  3. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录

  4. pandas编写自定义函数计算多个数据列的加和(sum)、使用groupby函数和apply函数聚合计算分组内多个数据列的加和

    pandas编写自定义函数计算多个数据列的加和(sum).使用groupby函数和apply函数聚合计算分组内多个数据列的加和 目录

  5. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count).例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数 目录

  6. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录

  7. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum).例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和 目录

  8. pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值、滚动中位数、滚动最大最小值、滚动加和等

    pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值.滚动中位数.滚动最大最小值.滚动加和等 目录

  9. pandas使用groupby函数和agg函数获取每个分组特定变量独特值的个数(number of distinct values in each group in dataframe)

    pandas使用groupby函数和agg函数获取每个分组特定变量独特值的个数(number of distinct values in each group in dataframe) 目录

最新文章

  1. 手把手从零开始搭建k8s集群超详细教程
  2. 实现跨浏览器的HTML5占位符
  3. halcon 定位_HALCON高级篇:单个相机的尺寸测量
  4. 【渝粤教育】电大中专学习指南 (3)作业 题库
  5. vue路由匹配实现包容性_成为多元化和包容性领导者的3个关键策略
  6. qtableview删除选中行_如何批量删除PPT备注+如何修改模板信息
  7. 现代OpenGL教程 01 - 入门指南
  8. 药品计算机培训计划,_计算机培训学习计划范文
  9. 轻量级模型:MobileNet V2
  10. 关于HTML页面跳转的5种方法分享。
  11. 怎么看别人的qq空间怎么看加密的qq空间
  12. 自学成才秘籍!机器学习深度学习经典资料汇总
  13. 【渝粤题库】陕西师范大学292951 公司金融学Ⅱ 作业(专升本)
  14. C语言如何定义p1口,求助C51里如何实现P1口输入?置1了还没行哦。
  15. 基音周期计算(pitch tracking)
  16. android命令大全 pdf,android调试桥(adb)常用命令.pdf
  17. Java图形化界面编程超详细知识点(8)——列表框
  18. 重载和重写的区别是什么
  19. 【Java】如何编写、运行一个Java程序
  20. 将MongoDB添加到windows服务中

热门文章

  1. keepalived 负载 mysql 3306端口问题
  2. Microsoft Office Communications Server 2007 R2 RTM 简体中文企业版部署速成篇之一
  3. 【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
  4. JAVA怎么在函数内改变传入的值
  5. 拉格朗日插值编程实现
  6. 深度学习三十年创新路
  7. document.onreadystatechange()来判断页面加载完
  8. [转]淘宝sdk——入门实战之header.php制作(二)
  9. request.getRequestURL()和request.getRequestURI()区别
  10. “docker run”VS“docker exec”,这两个命令有区别吗?