【发布时间】:2015-10-16 10:19:50
【问题描述】:
我正在开发一个使用 Spring、Maven 和 Java 7 的项目。
我有一个包含 bigdecimal 的列表,并且必须总结列表中的所有元素。我知道使用 for 循环我们可以如下所示,
List<BigDecimal> list = new ArrayList<BigDecimal>();
list.add(new BigDecimal(10.333));
list.add(new BigDecimal(14.333));
BigDecimal result = new BigDecimal(0);
for (BigDecimal b : list) {
result = result.add(b);
}
有没有更好的方法?使用 google gauva FluentIterable 或 apache ArrayUtils/StatUtils?
【问题讨论】:
-
@kkkkk 是的。那就是 BigDecimal.add()。我想迭代列表并添加。所以我想像 api FluentIterable 那样做一些事情
-
我认为您的解决方案简洁明了。你为什么要改变它?也许你应该选择 Java 8 及其
Stream API。 -
一个小改进:
BigDecimal result = BigDecimal.ZERO;。否则,你的代码是好的。 -
@Flown 是的,我知道 java 8 中的 Stream。但我现在无法将我的应用程序迁移到 java 8。正如我所说,我想使用一些像 FluentIterable 这样的想法
-
当在 String
list.add(new BigDecimal("10.333"))上使用构造函数时;` BigDecimal 会知道 3 的精度,并且总和是正确的。暂时您将双精度数的近似误差导入总和。对于这个问题:没有更好的方法,因为 BigDecimal 是不可变的。 Java 8 将允许并行添加流。
标签: java list collections java-7