java8lamdba表达式list集合的BigDecimal求和操作
//BigDecimal求和
BigDecimal totalGrade1 = studentList.stream().map(Student::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add);//上⾯的求和不能过滤bigDecimal对象为null的情况,可能会报空指针,这种情况,我们可以⽤filter⽅法过滤,或者重写求和⽅法
//过滤
BigDecimal totalGrade1 = studentList.stream().map(i ->{
Grade()==null){
return BigDecimal.ZERO;
}else{
Grade();
}
}).reduce(BigDecimal.ZERO, BigDecimal::add);
//重写求和⽅法
package com.hanhoomon.util;
import java.math.BigDecimal;
/**
* 重写BigDecimal的求和⽅法,避免BigDecimal对象为null的时,报空指针的情况
java stream*/
public class BigDecimalUtils {
public static BigDecimal ifNullSetZero(BigDecimal value){
if(value != null){
return value;
}else{
return BigDecimal.ZERO;
}
}
public static BigDecimal sum(BigDecimal ...value){
BigDecimal result = BigDecimal.ZERO;
for(int i =0; i < value.length; i++){
result = result.add(ifNullSetZero(value[i]));
}
return result;
}
}
//使⽤重写的⽅法
BigDecimal totalGrade2 = studentList.stream().map(Student::getGrade).reduce(BigDecimal.ZERO, BigDecimalUtils::sum);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。