class LedgerEntry{
private BigDecimal creditAmount;
private BigDecimal debitAmount;
//getters and setters
}
BigDecimal creditTotal = ledgeredEntries.stream().map(p ->p.getCreditAmount()).
reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal debitTotal = ledgeredEntries.stream().map(p ->p.getDebitAmount()).
reduce(BigDecimal.ZERO, BigDecimal::add);
//...
//Use creditTotal, debitTotal later
Java 8之前版本
BigDecimal creditTotal = BigDecimal.ZERO;
BigDecimal debitTotal = BigDecimal.ZERO;
for(LedgerEntry entry : ledgerEntries){
creditTotal = creditTotal.add(entry.getCreditAmount());
debitTotal = debitTotal.add(entry.getDebitAmount());
}
您可以减少到一个总计条目:
LedgerEntry totalsEntry = entries.stream().reduce(new LedgerEntry(), (te, e) -> {
te.setCreditAmount(te.getCreditAmount().add(e.getCreditAmount()));
te.setDebitAmount(te.getDebitAmount().add(e.getDebitAmount()));
return te;
});
更新
在注释中,正确地指出reduce()
不应修改初始标识符值,而collection()
应用于可变约简。下面是使用collection()
的版本(使用相同的biconsumer
作为累加器和组合器)。如果未设置creditamount
和/或debitamount
值,它还解决了潜在的NPE问题。
BiConsumer<LedgerEntry, LedgerEntry> ac = (e1, e2) -> {
BigDecimal creditAmount = e1.getCreditAmount() != null ? e1.getCreditAmount() : BigDecimal.ZERO;
BigDecimal debitAmount = e1.getDebitAmount() != null ? e1.getDebitAmount() : BigDecimal.ZERO;
e1.setCreditAmount(creditAmount.add(e2.getCreditAmount()));
e1.setDebitAmount(debitAmount.add(e2.getDebitAmount()));
};
LedgerEntry totalsEntry = entries.stream().collect(LedgerEntry::new, ac, ac);
我是java8的新手。 我有以下课程。 我能够保存这个在mongo收集: 现在,我得出了基于spring mongo数据存储库的结果。我想迭代上面的mongo集合,这样我只能得到我尝试过的以下车辆列表: 请帮助我了解java8。提前谢谢
问题内容: 我有一个像(669256.02,6117662.09,669258.61,6117664.39,669258.05,6117665.08)的集合需要迭代 将打印 我在Python 3.3 btw上 问题答案: 您可以使用迭代器:
我有两份清单: 列表1: Object1(name1, id1) 列表2: Object2(name2, id2) 给定list1的大小与list2相同 我想迭代list2,如果list2的name2不为null,则更新list1的name1。 以下是使用旧java的代码: 用java实现这一点的最佳方法是什么。util。流动
我发现自己经常遇到这种模式。我有一个从api中返回的对象数组,我只需要操作所有对象中的一个属性。 有没有办法使用ES6/Babel或Typescript让该模式更具声明性? 寻找一些巧妙的破坏技巧或类似的东西。
在Java8流中,允许我修改/更新内部的对象吗?为。:
我有一个这样定义的类: 现在我有一个项目对象列表,现在我想找到所有项目的总价。在Java8中我们如何做到这一点? 如果列表是简单的整数,那么我们在这里给出了解决方案--如何用java流求和整数列表?