介绍场景:
1。对集合按照单个属性分组
2对集合按照多个属性分组
解决方案1多个属性拼接出一个组合属性
这篇文章主要介绍Java8中groupBy实现集合的分组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
场景:
Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map
1。对集合按照单个属性分组
。按照skuId分组
Map<字符串,List祝辞,detailsMap01 =, dtos1.stream () .collect (Collectors.groupingBy (EntryDeliveryDetailywk: getskuId);
2对集合按照多个属性分组
解决方案1多个属性拼接出一个组合属性
将多个字段拼接成一个新字段,在使用Java8的groupBy进行分组
Map<字符串,List祝辞,detailmap =, details.stream () →.collect (Collectors.groupingBy (d fetchGroupKey (d),)); private String  fetchGroupKey (EntryDeliveryDetailywk 细节){ .toString return 才能detail.getSkuId () (), +,才能detail.getItemsName (), +,才能detail.getWarehouseId () .toString (), +,才能detail.getSupplierId () .toString (); 以前,}> 解决方案2造静态内部类
在集合元素类里构造静态内部类(成员变量即分组的对应多个属性)
。
//静态内部类 class Person  { ,public static  class NameAge  { public 才能;NameAge(名称、String int 年龄),{ ,,… ,,}//才能,注意,重写方法,must implement equals 以及hash 函数 ,} ,public NameAge  getNameAge (), { return 才能;new  NameAge(姓名、,年龄); ,} }//分组 Map解决方案3嵌套调用Java8 groupby
注意得到也是嵌套映射
Map<字符串,Map<整数,,List在祝辞map =,人 ,.collect (Collectors.groupingBy(人::getName, Collectors.groupingBy才能(人::getAge));//调用 map.get (“Fred") . get (18); 以上是“Java8中groupBy实现集合的分组”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
Java8中groupBy实现集合的分组