java8-数值计算

空扰寡人 提交于 2020-01-13 23:28:30
  • BigDecimal

    • 求和
      BigDecimal  amount = list.stream().map(Order::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
      
  • List

    • 计算某属性的和
      //方式一
      int goodsQty = list.stream().mapToInt(OrderDetail::getGoodsSum).sum();
      //方式二
      int goodsQty = list.stream().collect(Collectors.summingInt(OrderDetail::getGoodsSum)).intValue();
      
    • 分组后计算每组数据某属性的和
      Map<String,Integer> goodsSum = list().stream().collect(Collectors.groupingBy(OrderDetail::getGoodsSku,Collectors.summingInt(OrderDetail::getGoodsSum)));
      
    • 分组后计算每组数据的数量
      Map<String,Long> mobileMap = list.stream().collect(Collectors.groupingBy(Customer::getMobile, Collectors.counting()));
      
    • 获取集合对象中某个属性的最小值
      BigDecimal minUnitPrice = list.stream().map(GoodsSku::getPrice).min((p1, p2)->p1.compareTo(p2)).get();
      
    • 获取集合中某属性的数量
      int GoodsSize=list.stream().collect(Collectors.groupingBy(OrderDetail::getGoodsSku)).size();
      
    • 综合使用(过滤条件后求和)
      allBoxWeight = caseDataList.stream().filter(orderCase->null!=orderCase.getCaseAllPrice()) 
                      .map(SalesOrderCase::getCaseAllWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
      
  • summaryStatistics函数

    • 函数代码实现
      IntSummaryStatistics summaryStatistics = list.stream().mapToInt(Order::getGoodsId).summaryStatistics();
      
    • 获取数量
      System.out.println("summaryStatistics函数获取数量:"+summaryStatistics.getCount());
      
    • 获取平均值
      System.out.println("summaryStatistics函数获取平均值:"+summaryStatistics.getAverage());
      
    • 获取最大值
       System.out.println("summaryStatistics函数获取最大值:"+summaryStatistics.getMax());
      
    • 获取最小值
      System.out.println("summaryStatistics函数获取最小值:"+summaryStatistics.getMin());
      
    • 求和
      System.out.println("summaryStatistics函数获取和"+summaryStatistics.getSum());
      
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!