Class Order{
List<Transaction> transactions
}
Class Transaction{
public String state;
public Long id;
public Long dateInMillis;
}
我正在寻找一种有效的方法来执行以下操作
我有一个订单列表,每个订单可以有多个交易。交易可以处于两种状态,即ACTIVE,COMPLETED(以及我们之间不关心的一堆状态)。对于每个订单,我们在启动流程时创建一个事务(ACTIVE),并在结束时创建另一个事务(COMPLETED)。我想用requestDate&amp ;;生成交易清单。完成日期。对于处于ACTIVE状态的事务,requestDate和Completion date是事务日期本身。对于处于COMPLETED状态的交易,requestDate是相应ACTIVE事务的日期,完成日期是当前事务的日期,即COMPLETED状态1.
例如两笔交易t1&amp; t2其中t1的状态为ACTIVE,t2的状态为COMPLETED。
orders.stream()
.forEach(order -> {
order.getTransactions().stream().forEach(transaction -> {
});
ResultObject obj = new ResultObject();
obj.setTransactionId(transaction.getId());
if(transaction.getState()=="ACTIVE"){
obj.setRequestDateInMillis(transaction.getDateInMillis);
obj.setCompletionDateInMillis(transaction.getDateInMillis());
}else if(transaction.getState()=="COMPLETED"){
obj.setCompletionDateInMillis(transaction.getDateInMillis());
TODO: find transaction for this order which is in ACTIVE state and set that time as RequestDate for current transaction
}
});
答案 0 :(得分:1)
Transaction active, completed;
for(Order o : listOfOrders){
active = null, completed = null;
for (Transaction t : o.transactions){
if (t.state.equals("Active"))
active = t;
else if (t.state.equals("Completed"))
completed = t;
//break?
}
if (completed != null){
}
else if (active != null){
}
else{
//Error
}
}
我认为在使用流之前,逻辑可以使用标准循环。之后,如果订单列表足够大(10K +),那么流可能会变得方便