今天工作遇到一个问题,花了不少时间,业务是统计一个List 中对象的两个属性计算之后的总和,解决代码如下:
public class SingleThreadTest{
public static void main(String[] args) {
Apple a1 = new Apple(10, 5);
Apple a2 = new Apple(10, 5);
Apple a3 = new Apple(10, 5);
Apple a4 = new Apple(10, 5);
List<Apple> list = new ArrayList<>();
list.add(a1);
list.add(a2);
list.add(a3);
list.add(a4);
BigDecimal bigDecimal = list.stream().map(p -> p.getA().multiply(p.getB())).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 在这里可以把字段类型转换成任意类型
System.out.println(bigDecimal); // 最后打印的值是200 !
}
@Getter
@Setter
public static class Apple{
private BigDecimal a;
private BigDecimal b;
public Apple(Integer a, Integer b){
this.a = BigDecimal.valueOf(a);
this.b = BigDecimal.valueOf(b);
}
}
}