我正在尝试查找与 User 关联的最新订单,我必须使用 forEach 循环反向迭代才能找到最新订单。
这是我的代码:
public Optional<Order> lastOrderFrom(User user, List<Order> orderList) {
Optional<Order> result =
orderList
.stream()
.filter(order -> order.getUser().equals(user))
.collect(Collectors.toCollection(result::new))
.forEach(i -> System.out.println(user));
return result;
}
您可以使用
ListIterator
进行反向迭代:
for (ListIterator<Order> iter = orderList.listIterator(orderList.size());
iter.hasPrevious(); ) {
Order order = iter.previous();
if (order.getUser().equals(user)) {
return Optional.of(order);
}
}
return Optional.empty();