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());
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章