java8-数值计算

  • 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());
      
发布了16 篇原创文章 · 获赞 0 · 访问量 2472

猜你喜欢

转载自blog.csdn.net/dengdai123654/article/details/103951396