问题
If we have all int or long or other primitive datatype value in list then we obtain sun of all values using
return items.stream().mapToInt(i -> i).sum();
I have list of BigDecimal values,how to find the sum of all values using Java8
As there is no default method like mapToBigDecimal I tried to create plain map but then I cannot use sum()
回答1:
List<BigDecimal> items = Arrays.asList(BigDecimal.ONE, BigDecimal.valueOf(1.5), BigDecimal.valueOf(100));
items.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
Though Answer provided by Lisq199 works but I am in favor of including Holger and Klitos comments,This handles No values and always returns a value
回答2:
You can use Stream#reduce(BinaryOperator).
A simple example:
List<BigDecimal> items = Arrays.asList(BigDecimal.ONE, BigDecimal.valueOf(1.5), BigDecimal.valueOf(100));
items.stream().reduce((i, j) -> i.add(j)).ifPresent(System.out::println);
// Outputs 102.5
来源:https://stackoverflow.com/questions/41966808/sum-of-bigdecimal-list-using-streams-and-sum-method