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());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM