1.计算一个number类型的List对象总和
Integer[] integerArray = {1, 3, 15, 10, 16}; List<Integer> list = new ArrayList<>(Arrays.asList(integerArray)); IntSummaryStatistics summaryStatistics = list.stream().mapToInt((s) -> s).summaryStatistics(); System.out.println("总和:" + summaryStatistics.getSum()); System.out.println("平均数:" + summaryStatistics.getAverage()); System.out.println("总个数:" + summaryStatistics.getCount()); System.out.println("最大值:" + summaryStatistics.getMax()); System.out.println("最小值:" + summaryStatistics.getMin());
结果:
2.计算一个List对象中某个字段总和
2.1求和字段属性为Integer时:
LambdaQueryWrapper<TransportInfo> queryWrapper2 =Wrappers.lambdaQuery(TransportInfo.class); queryWrapper2.eq(TransportInfo::getStartContainerFactoryId,fId);
2 3 |
|
List<TransportInfo> list=transportInfoService.list(queryWrapper2);
Integer tTotal=list.stream().collect(Collectors.summingInt(TransportInfo::getContainerUse));
2.2求和字段属性为BigDecimal时:
BigDecimal totalCost = list.stream().map(StatisticsFinanceCostDetail::getRmbAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
2.3先将BigDecimal取整再求和:
StatisticsFinanceCostDetail totalCost1 = list.stream().reduce((x,y)->{ StatisticsFinanceCostDetail user=new StatisticsFinanceCostDetail(); user.setRmbAmount(x.getRmbAmount().setScale(0, RoundingMode.DOWN).add(y.getRmbAmount().setScale(0, RoundingMode.DOWN))); return user; }).get();
System.out.println(totalCost1.getRmbAmount());