java - 如何在 Java 流处理中存储中间状态
问题描述
我有以下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();
}
如何将其转换为流处理?
谢谢你的帮助!
解决方案
用于map
转换,filter
用于条件,findFirst
您可以执行以下操作:
return availableOrderIds.stream()
.map(this::tryToReserve)
.filter(this::successful)
.findFirst()
.map(this::withReservationIdFrom)
.orElse(0L); // assumed as default value
此外,如果提供了实用程序,您也可以将它们包含在操作中:
return availableOrderIds.stream()
.map(this::tryToReserve)
.filter(res -> !res.isEmpty())
.findFirst()
.map(res -> res.get(0).getReservationId())
.orElse(0L);
推荐阅读
- android - 如何从android studio中的firebase存储中获取所有图像?
- informix - 在 Informix 中跳过特定用户的触发器
- c# - C# 可以在操作数右侧使用 Func<> 重载运算符“>”吗?
- reactjs - 如何将动作列设置为材料ui表ReactJs中的最后一列?
- azure - 连接似乎不适用于 azure
- selenium - 如何跨会话重用驱动程序
- javascript - 生成随机 uuid Javascript
- angular - Mat Sort 标头不对数据进行排序
- reactjs - 用 react-konva 反应 DnD
- javascript - 运行单个 Nightwatchjs 测试的问题