java stream 使用reduce方法统计list中的bigdecimal数值
时间: 2024-09-30 13:14:17 浏览: 21
在Java中,Stream API提供了一个非常强大的`reduce`方法,可以用于对列表中的BigDecimal数值进行累积计算。`reduce`方法接受一个初始值和一个BinaryOperator操作函数作为参数,将列表中的元素依次应用这个操作函数,直到得到最终的结果。
假设你有一个BigDecimal类型的List,比如:
```java
List<BigDecimal> bigDecimals = Arrays.asList(new BigDecimal("10"), new BigDecimal("20"), new BigDecimal("30"));
```
你可以使用`reduce`方法来求和,示例如下:
```java
BigDecimal sum = bigDecimals.stream()
.reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
```
在这个例子中,初始值`BigDecimal.ZERO`是一个空的累积器,`(a, b) -> a.add(b)`是一个二元操作函数,它接收两个参数`a`和`b`,并将它们相加。`reduce`会从列表的第一个元素开始,每次将当前元素加上上一次的累积结果,直到遍历完所有元素。
相关问题
java使用 stream 计算平均值 list 存的BigDecimal
使用Java的Stream API可以很方便地对存储了BigDecimal类型的List进行计算平均值。下面是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<BigDecimal> numbers = Arrays.asList(
new BigDecimal("10.5"),
new BigDecimal("20.3"),
new BigDecimal("30.8"),
new BigDecimal("40.2"),
new BigDecimal("50.6")
);
BigDecimal average = numbers.stream()
.reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(BigDecimal.valueOf(numbers.size()), 2, BigDecimal.ROUND_HALF_UP);
System.out.println("Average: " + average);
}
}
```
在这个例子中,我们首先创建了一个存储了BigDecimal类型的List。然后使用Stream的reduce()方法将所有元素累加起来,得到总和。接着,我们使用divide()方法将总和除以元素的个数,计算平均值。最后,我们使用setScale()方法设置小数位数,并使用ROUND_HALF_UP进行四舍五入。
运行以上代码,将输出平均值。根据你的具体需求,你可以根据实际情况进行调整。
Java list是BigDecimal类型用Stream求和
可以使用Java 8的Stream API来对BigDecimal类型的List进行求和,具体实现如下:
```java
List<BigDecimal> list = Arrays.asList(BigDecimal.valueOf(1.1), BigDecimal.valueOf(2.2), BigDecimal.valueOf(3.3));
BigDecimal sum = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(sum);
```
上述代码中,首先创建一个包含BigDecimal类型元素的List对象,并使用Stream的reduce()方法将所有元素累加求和。reduce()方法的第一个参数是初始值,这里设置为BigDecimal.ZERO,第二个参数是BinaryOperator类型的函数接口,使用BigDecimal::add表示将两个BigDecimal对象相加。
运行上述代码将输出6.6,即3个BigDecimal类型元素的和。