如何在Java流处理中存储中间状态
我有以下Java循环:如何在Java流处理中存储中间状态,java,functional-programming,java-stream,Java,Functional Programming,Java Stream,我有以下Java循环: for(最终长订单号:availableOrderIds){ 最终列表保留=tryToReserve(订单号); 如果(成功(预订)){ 从(预订)返回带有预订的数据; } } 方法: private boolean成功(最终列表保留){ return!reservations.isEmpty(); } private Long with reservation from(最终列表预订){ 返回reservations.get(0.getReservationId()
for(最终长订单号:availableOrderIds){
最终列表保留=tryToReserve(订单号);
如果(成功(预订)){
从(预订)返回带有预订的数据;
}
}
方法:
private boolean成功(最终列表保留){
return!reservations.isEmpty();
}
private Long with reservation from(最终列表预订){
返回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);
使用
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);
大致如下:
availableOrderIds.stream()
.map(orderNumber -> tryToReserve(orderNumber))
.filter(reservation -> successful(reservation))
.map(reservations -> withReservationIdFrom(reservations))
.findFirst()
.get();
大致如下:
availableOrderIds.stream()
.map(orderNumber -> tryToReserve(orderNumber))
.filter(reservation -> successful(reservation))
.map(reservations -> withReservationIdFrom(reservations))
.findFirst()
.get();