根据list某一元素对其进行分组

今天有个小需求,简单记录一下,将返回的list根据其中的时间字段进行分组~~

 /**
   @describe 根据集合某一属性创建分组返回map
   @param
    * @param List<HeCloudDisk> list
   @return
   @author 何章怀晓 hezhanghuaixiao
   @date 2020/9/15  17:33
   @other
   */
  private static  Map<String, List<HeCloudDisk>> groupByList(List<HeCloudDisk> list) {
    //将集合根据时间进行分组返回
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Map<String, List<HeCloudDisk>> rerslist = new HashMap<>();
    for (int i = 0; i < list.size(); i++) {

      try{
        //首元素
        if (i == 0) {
          //当前元素的时间
          String format = simpleDateFormat.format(list.get(i).getCreateTime());
          //下一个元素时间
          String format1 = simpleDateFormat.format(list.get(i + 1).getCreateTime());
          List<HeCloudDisk> l = new ArrayList<>();
          //对比时间
          if (format.equals(format1)) {
            l.add(list.get(i));
            rerslist.put(format, l);
          } else {
            //把上一个加入map
           // rerslist.put(format, l);
            List<HeCloudDisk> l2 = new ArrayList<>();
            l2.add(list.get(i + 1));
            rerslist.put(format, l2);
          }
        } else {
          //不是首元素,进来先判断当前元素和上一个元素是否同类
          //当前元素的时间
          String format = simpleDateFormat.format(list.get(i).getCreateTime());
          //上一个元素时间
          String format1 = simpleDateFormat.format(list.get(i - 1).getCreateTime());
          if (format.equals(format1)) {
            //取出上次添加的集合
            List<HeCloudDisk> heCloudDisks = rerslist.get(format1);
            heCloudDisks.add(list.get(i));
            rerslist.put(format, heCloudDisks);
          } else {
            //如果当前的和前一个不一样,说明是新的
            List<HeCloudDisk> heCloudDisks = new ArrayList<>();
            heCloudDisks.add(list.get(i));
            rerslist.put(format, heCloudDisks);
          }
        }
      }catch (Exception e){
        e.printStackTrace();
      }

    }
    return rerslist;
  }

调用一下

创建5组对象,分别有不同的时间,将所有对象放入一个大集合里,然后将此集合调用100次

  for (int i = 0; i <100 ; i++) {
    Map<String, List<HeCloudDisk>> stringListMap = groupByList(list);
    System.out.print(stringListMap.size()+"  ")
}

每次按照时间均分为5组
在这里插入图片描述

将一个大集合按照时间分为了5组
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值