如何在Java流处理中存储中间状态

问题描述 投票:0回答:2

我有以下Java循环:

for (final Long orderNumber : availableOrderIds) {
    final List<ReservationDetailResponse> reservations = tryToReserve(orderNumber);
    if (successful(reservations)) {
        return withReservationIdFrom(reservations);
    }
}

和方法:

private boolean successful(final List<ReservationDetailResponse> reservations) {
    return !reservations.isEmpty();
}
private Long withReservationIdFrom(final List<ReservationDetailResponse> reservations) {
    return reservations.get(0).getReservationId();
} 

如何将其转换为流处理?

感谢您的帮助!

java functional-programming stream
2个回答
1
投票
使用map进行转换,使用filter进行条件和findFirst,您可以做类似的事情:

return availableOrderIds.stream() .map(this::tryToReserve) .filter(this::successful) .findFirst() .map(this::withReservationIdFrom) .orElse(0L); // assumed as default value


1
投票
遵循以下内容:

availableOrderIds.stream() .map(orderNumber -> tryToReserve(orderNumber)) .filter(reservation -> successful(reservations)) .map(reservations -> withReservationIdFrom(reservations)) .findFirst() .get();

© www.soinside.com 2019 - 2024. All rights reserved.