Java8中groupBy实现集合的分组

  介绍

这篇文章主要介绍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实现集合的分组