java reduce 求和_Java Stream流之求和的实现

这篇博客通过示例展示了如何使用Java Stream流进行数值求和操作,包括`BigDecimal`、`int`、`double`和`long`类型的求和。文章提供了`reduce`方法与`mapToDouble`函数的用法,并且使用了`IntSummaryStatistics`来获取统计信息,如数量、平均值、最大值、最小值和总和。
摘要由CSDN通过智能技术生成

BigDecimal:

BigDecimal bb =list.stream().map(Plan::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);

int、double、long:

double max = list.stream().mapToDouble(User::getHeight).sum();

补充:java8-Stream流之数值函数(求和、最大值、最小值、平均值)

我就废话不多说了,大家还是直接看代码吧~

//todo stream流的使用

//todo filter:过滤操作;保留符合过滤条件的对象;这是一个中间操作;后面可以带最终操作

//todo mapToInt: 将数据根据double类型来处理;

public static void main(String[] args) {

List list = createSalesOrder();

//获取集合中城市为上海的数量

System.out.println("mapToInt获取和:"+list.stream().filter(s -> s.getConsigneeCity().equals("上海"))

.mapToInt(SalesOrder::getCreateUserId).sum());

//利用stream流中的函数获取相关数值信息

IntSummaryStatistics summaryStatistics = list.stream().filter(s -> s.getConsigneeCity().equals("上海"))

.mapToInt(SalesOrder::getCreateUserId).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());

}

static List createSalesOrder(){

List list = new LinkedList<>();

SalesOrder salesOrder = new SalesOrder();

salesOrder.setCreateUserId(12);

salesOrder.setConsigneeCity("上海");

list.add(salesOrder);

salesOrder = new SalesOrder();

salesOrder.setConsigneeCity("上海");

salesOrder.setCreateUserId(24);

list.add(salesOrder);

salesOrder = new SalesOrder();

salesOrder.setConsigneeCity("北京");

salesOrder.setCreateUserId(18);

list.add(salesOrder);

salesOrder = new SalesOrder();

salesOrder.setConsigneeCity("深圳");

salesOrder.setCreateUserId(16);

list.add(salesOrder);

salesOrder = new SalesOrder();

salesOrder.setConsigneeCity("广州");

salesOrder.setCreateUserId(30);

list.add(salesOrder);

salesOrder = new SalesOrder();

salesOrder.setConsigneeCity("杭州");

salesOrder.setCreateUserId(40);

list.add(salesOrder);

return list;

}

hw11tuvqwfh.jpg

以上为个人经验,希望能给大家一个参考,也希望大家多多支持聚米学院。如有错误或未考虑完全的地方,望不吝赐教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值