java 数据库函数 求和_Java Stream流之求和的实现

本文介绍了如何使用Java Stream流进行数值求和操作,包括BigDecimal的求和、int、double、long类型的求和,以及如何通过filter和mapToInt结合summaryStatistics函数获取统计信息,例如数量、平均值、最大值、最小值和总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

edb2a601d2ce57c9ca2dbf529c846a2c.png

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

### 使用 Java Stream API 进行数值求和的方法 Java Stream API 提供了多种方式用于对数值型数据进行求和操作。根据不同的数据类型和需求,可以使用 `IntStream`、`LongStream` 和 `DoubleStream` 中的 `sum()` 方法完成求和任务。这些类分别用于处理 `int`、`long` 和 `double` 类型的式数据[^1]。 #### 基本类型求和 对于基本类型数值,可以直接调用 `sum()` 方法进行求和。例如: ```java import java.util.stream.IntStream; public class Main { public static void main(String[] args) { int sum = IntStream.of(1, 2, 3, 4, 5).sum(); System.out.println("Sum: " + sum); // 输出 Sum: 15 } } ``` 上述代码中,`IntStream.of()` 创建了一个包含多个 `int` 值的,并通过 `sum()` 方法计算了它们的总和。同样的方式适用于 `LongStream` 和 `DoubleStream`。 #### 对对象进行求和中存储的是对象而非基本类型时,需要先通过 `mapToInt`、`mapToLong` 或 `mapToDouble` 方法将对象映射为数值类型,再调用 `sum()` 方法进行求和。例如: ```java import java.util.*; import java.util.stream.*; class Product { private String name; private int price; public Product(String name, int price) { this.name = name; this.price = price; } public int getPrice() { return price; } } public class Main { public static void main(String[] args) { List<Product> products = Arrays.asList( new Product("A", 100), new Product("B", 200), new Product("C", 300) ); int totalPrice = products.stream() .mapToInt(Product::getPrice) .sum(); System.out.println("Total Price: " + totalPrice); // 输出 Total Price: 600 } } ``` 在这个例子中,`mapToInt` 方法将 `Product` 对象映射为其 `price` 属性,然后调用 `sum()` 方法计算总和。 #### 使用 `reduce` 方法进行求和 除了 `sum()` 方法之外,还可以使用 `reduce` 方法实现求和逻辑。这种方式更加灵活,适用于自定义聚合操作: ```java import java.util.*; import java.util.stream.*; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .reduce(0, Integer::sum); System.out.println("Sum: " + sum); // 输出 Sum: 15 } } ``` `reduce` 方法接受一个初始值(如 `0`)和一个累加函数(如 `Integer::sum`),依次将中的元素合并为一个结果。 #### 注意事项 - `Stream<T>` 接口本身不提供 `sum()` 方法,必须通过 `mapToInt`、`mapToLong` 或 `mapToDouble` 转换为基本类型后才能使用。 - 使用 `sum()` 方法时,中不能包含 `null` 元素,否则会抛出 `NullPointerException`。 - `reduce` 方法提供了更高的灵活性,可以用于非数值类型或自定义聚合逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值