如何在java中汇总BigDecimal属性

时间:2016-06-23 10:41:32

标签: java

让我们举一个简单的例子:

 Class Foo{
     private BigDecimal item1;
     private BigDecimal item2;
     private BigDecimal item3;
     private BigDecimal item4;
     private BigDecimal item5;
//setters and getters
   public BigDecimal getTotal(){
       BigDecimal total = BigDecimal.ZERO;
        if(null != item1){
            total =total .add(item1);
           }
        if(null != item2){
            total =total .add(item2);
           }
          ...
          ...
}
    }

我在实体层面总结。这是正确的方法吗?

任何人都可以给我更好的代码来获得总价值

3 个答案:

答案 0 :(得分:1)

使用List<BigDecimal>

public BigDecimal getTotal(){
    List<BigDecimal> values =  Arrays.asList(item1, item2, item3, item4, item5)

    BigDecimal total = BigDecimal.ZERO;
    for (BigDecimal value : values) {
        if(value != null) {
            total = total.add(value);
        }
    }
    return total;
}

答案 1 :(得分:1)

您可以使用循环来简化代码:

import java.util.Arrays;

...

public BigDecimal getTotal(){
   BigDecimal total = BigDecimal.ZERO; 
   for(BigDecimal bd: Arrays.asList(item1,item2,item3,item4,item5)){
        if(null != bd){
            total =total .add(bd);
           }
    }
}

答案 2 :(得分:0)

如果您有固定(和少量)数字,您可以按照以下步骤操作:

            total = total.add(item1 ==null ? BigDecimal.ZERO : item1).add(item2 ==null ? BigDecimal.ZERO : item2).add(item3 ==null ? BigDecimal.ZERO : item3);

如果项目为空则添加0,否则添加项目本身。如果你有一个可变数量的项目,那么你需要在数组中迭代它们:

for (BigDecimal current : myBigDecimalArray){
   total = total.add(current ==null ? BigDecimal.ZERO : current );
}