zoukankan      html  css  js  c++  java
  • list stream:分组,统计,筛选

     

    分组:

    Map<Long,List<PmsCategoryStatisticVo>> map = list.stream().collect(Collectors.groupingBy(b -> b.getCategoryId()));

    list为对象集合,根据categoryId分组,key为cateogryId,value为categoryId相同的对象集合。


    对象属性相加:

    1.  
      BigDecimal amount = list.stream()
    2.  
      // 将对象的mongey取出来map为Bigdecimal
    3.  
      .map(b -> b.getAmount())
    4.  
      // 使用reduce聚合函数,实现累加器
    5.  
      .reduce(BigDecimal.ZERO, BigDecimal::add);

    将对象的mongey取出来map为Bigdecimal,使用reduce聚合函数,实现累加器

    筛选并根据id去重:

    1.  
      List list= statisticList.stream()
    2.  
      .filter(b -> '2019-01-01'.equals(b.getStatisticTime()))
    3.  
      .filter(b -> b.getCategoryId().equals(1L))
    4.  
      .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(b -> b.getId()))), ArrayList::new));

    过滤statisticTime等于2019-01-01,
    过滤categoryId等于1L,
    去重->将过滤后的转set,key为id(set集合key不能重复)->在转为ArrayList

    字符串分隔,并转为Long型集合:

    1.  
      String tenantIds = “1,2,3,4,5,6”;
    2.  
      List<Long> listIds = Arrays.asList(tenantIds.split(",")).stream().map(s -> Long.parseLong(s)).collect(Collectors.toList());

    获取到对象属性并去重:

    List<Long> roleIds = roles.stream().map(r -> r.getId()).distinct().collect(Collectors.toList());
  • 相关阅读:
    assert()函数用法总结
    UnityiOS键盘无法输入Emoji
    Unity 字体相关
    设计模式相关
    Unicode 与字符编码
    Unity 优化相关小结
    dedecms二次开发技巧汇总
    公司绝对不会告诉你的20个潜规则
    Ubuntu 如何自定义快捷键截图选定区域
    从一份简历就可以判断应聘者
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/14406731.html
Copyright © 2011-2022 走看看