Я пытался что-то и придумал ниже, это в любом случае хуже / лучше, чем оригинальный код.
delta = tranList.parallelStream().collect
(Collectors.summingInt(model -> getDelta(model, position.getAccountType()))).intValue();
private int getDelta(TransactionModel tran, String accountType) {
int delta = 0;
if(PositionCalcContant.BUY_INDICATOR.equals(tran.getTransactionType()))
{
if(PositionCalcContant.EXTERNAL.equals(accountType))
{
delta += tran.getTransactionQuantity();
}
else
{
delta -= tran.getTransactionQuantity();
}
}
if(PositionCalcContant.SELL_INDICATOR.equals(tran.getTransactionType()))
{
if(PositionCalcContant.EXTERNAL.equals(accountType))
{
delta -= tran.getTransactionQuantity();
}
else
{
delta += tran.getTransactionQuantity();
}
}
return delta;
}
Также это только для внутреннего цикла, где мы вычисляем дельту, дляВ целом, даже я согласен, что это будет слишком сложно и, возможно, не стоит этого.