私には、非アクティブとアクティブの両方のSalesOrdersのリストがあります。このリスト全体をループし、各SalesOrderがアクティブであった時間を設定したいと思います。以下のように(リストはすでにのStartTimeが発注される)特定の値を持つ次のアイテムが指定されたリストのアイテムの値を設定します。
私のループは次のとおりです。
for(int i = 0; i < salesOrders.size(); i++) {
if(salesOrders.get(i).getStatus() == RecordStatus.ACTIVE) {
ELDDutyLog activeSalesOrder = salesOrders.get(i);
for(int j = i + 1; j < salesOrders.size(); j++) {
if(salesOrders.get(j).getStatus() == RecordStatus.ACTIVE) {
ELDDutyLog nextActiveSalesOrder = salesOrders.get(j);
salesOrders.get(i).setActiveDurationMinutes(
Minutes.minutesBetween(
activeSalesOrder.getStartTime(),
nextActiveSalesOrder.getStartTime()
).getMinutes()
);
break;
}
}
}
}
return salesOrders;
このアプローチは動作しますが、私は多分Javaの8を使用することにより、これを行うのより良い方法がなければならないと感じ?誰も私の周りの任意の方向を提供することはできますか?
マイ悪いか
a.until(b, ChronoUnit.MINUTES)
(すでにlong
を返します)、それは@Eranがあると述べたのと同じようにタイプミス – user1501171ました'RecordStatus'と' ELDRecordStatus'は同じですか?、2番目の 'if'文でなければ、それは決して実行されないので、不要です。 –
'salesOrders.get(i)'と 'salesOrders.get(j)'は同じ 'SalesOrder'を表していることをどのように知っていますか?論理は明確ではありません。 – Eran