请帮助我将计算后转换为流
我有交易列表
class Transaction
{
String id;
Double amount;
Double balance;
}
before calculation / input
amount balance
100.0 null
-50.0 null
100.0 null
-100.0 null
200.0 null
我正在执行以下操作,以在每次交易发生之前计算原始余额。请注意,负交易意味着将金钱添加到帐户
@Test
public void runningBalanceWithoutUpdatingCurrent(){
Double current=300d;
for (int i = 0; i < transactions.size(); i++) {
Transaction transaction = transactions.get(i);
if(i==0)
transaction.setBalance(current + transaction.getAmount());
else
transaction.setBalance(transactions.get(i-1).getBalance()+transaction.getAmount());
}
System.out.println();
System.out.println("calculated");
print(transactions);
}
我的输出如下
calculated
amount balance
100.0 400.0
-50.0 350.0
100.0 450.0
-100.0 350.0
200.0 550.0
不会有太大的改进,但是您可以将IntStream
与forEach
一起使用,然后做一些事情:
public void runningBalanceWithoutUpdatingCurrent(){
if(transactions.size() > 0){
Transaction transaction = transactions.get(0);
transaction.setBalance(300d + transaction.getAmount());
}
IntStream.range(1, transactions.size())
.forEach(i -> {
Transaction t = transactions.get(i);
t.setBalance(transactions.get(i-1).getBalance() + t.getAmount());
});
System.out.println();
System.out.println("calculated");
print(transactions);
}