llist对象两个属性相乘在相加_Java8使用stream实现list中对象属性的合并,合并后的类型是BigDecimal
时间: 2024-02-23 15:02:48 浏览: 84
可以使用Java 8的Stream API来实现list中对象属性的合并(去重并求和)。假设有一个`List<MyObject>`,其中每个`MyObject`对象有两个属性`property1`和`property2`,我们想要将所有`property1`和`property2`相乘的结果相加并去重,可以按照以下步骤进行:
1. 使用`distinct()`方法去重。
2. 使用`map()`方法将所有`MyObject`对象的`property1`和`property2`相乘并转换成`BigDecimal`类型。
3. 使用`reduce()`方法将所有结果相加。
代码如下:
```
List<MyObject> list = ...;
BigDecimal result = list.stream()
.distinct()
.map(obj -> BigDecimal.valueOf(obj.getProperty1()).multiply(BigDecimal.valueOf(obj.getProperty2())))
.reduce(BigDecimal.ZERO, BigDecimal::add);
```
其中`getProperty1()`和`getProperty2()`分别是`MyObject`类中的两个属性的getter方法。我们使用`BigDecimal.valueOf()`方法将`property1`和`property2`转换成`BigDecimal`类型,并使用`multiply()`方法计算它们的积。最后,我们使用`reduce()`方法将所有积相加。注意,我们使用`BigDecimal.ZERO`作为初始值,并使用`add()`方法将所有积相加。
阅读全文