У меня есть объект торговли, который имеет inQty, outQty и tradeType.TradeType может быть «Fixed» или «Moveable».Поля количества имеют тип Double.
Используя потоки java 8, можно разделить поток на две группы, как показано ниже
1.All Trades that are 'Fixed' + All trades that are 'Moveable' and
have both inQty and outQty greater than 0.0
2. All trades that are 'Moveable' and inQty and outQty are zero value
(0.0)
Один известный мне подход заключается в использовании forEach идобавить объекты в два разных массива списков сделок. Есть ли лучший подход для достижения этого?
List<Trade> storageAndNonZeroMoveableTrades= new ArrayList<>();
List<Trade> zeroMoveableTrades= new ArrayList<>();
trades.forEach( i -> {
if(i.tradeType().equals(STORAGE_TRADE)){
storageAndNonZeroMoveableTrades.add(i);
}else if(i.tradeType().equals(MOVEABLE_TRADE)){
if(Double.compare(i.inQty(), 0.0d) != 0 &&
Double.compare(i.outQty(), 0.0d) != 0){
storageAndNonZeroMoveableTrades.add(i);
}else{
zeroMoveableTrades.add(i);
}
}
});