Java8 Steam 随笔记录

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  1. 两个List集合过滤并根据比较找出差集,并将差集归类为List
    List changeBetLimitList = list.stream().filter(item -> item.getSingleOrderMinStake() < oldData.getSingleOrderMinStake()).collect(Collectors.toList())
  2. List转Map
    Map oldBetLimitMap = oldBetLimitList.stream().collect(Collectors.toMap(BetLimit::getId, o -> o))

     

  3. List提取属性放入List
     

    List betItemIdList = list.stream().map(Order::getBetItemId).distinct().collect(Collectors.toList());
  4. List通过join,转字符串
    String inIds = accountIdList.stream().map(i -> i.toString()).collect(Collectors.joining(","));
  5. List group by Map>
    Map> groupByPriceMap= items.stream().collect(Collectors.groupingBy(Item::getPrice));
  6. List 多属性分组group by Map>
    Map>> amp                            = docLotDetailLists.parallelStream().collect(Collectors.groupingBy(DocLotDetail::getGroupOrder,Collectors.groupingBy(DocLotDetail::getBaseValueName)));
  7. List 多属性唯一分组Map>
    Map> percentDistributionLotteryMap =
            percentDistributionList.stream().collect
                    (Collectors.groupingBy(PercentDistribution::getAccountId, Collectors.toMap
                            (PercentDistribution::getLotteryCode, o -> o)));

8.BigDecimal求和

int totalBetStake = list.stream().map(Order::getBetStake).reduce(BigDecimal.ZERO,
        BigDecimal::add)
        .intValue();

9.groupBy转换Map类型

Map> dateOrderMap = orderList.stream().collect(Collectors.groupingBy(Order::getReportDate,
        LinkedHashMap::new, Collectors.toList()));

10.List中对象多个属性求和,并返原对象

  A a = list.stream() .reduce((x , y) -> new A( (x.getPrincipal() + y.getPrincipal()), (x.getFee() + y.getFee()) ) ).orElse( new A(0, 0) );

11.groupby 按某个属性分组,并收集为一个属性集合

Map> collect = list.stream().collect(Collectors.groupingBy(record -> record
        .getInt("accountId"), Collectors.mapping(record -> record.getInt("permissionId"), Collectors.toList())

转载于:https://my.oschina.net/u/127459/blog/3008620

你可能感兴趣的:(Java8 Steam 随笔记录)