【发布时间】:2020-03-17 07:36:13
【问题描述】:
我有一个列表
List<Tuple3<Object1, Mono<List<Object2>>, Mono<List<Object3>>>>
我需要写一个带有签名的方法
private Mono<Dto> buildDto(List<Tuple3<Object1, Mono<List<Object2>>, Mono<List<Object3>>>> tuples) {...}
我怎样才能在tuples列表中的所有项目一个接一个地获得Object1、Object2、Object3的值而不跳过任何一个?
我尝试执行
AtomicReference<Dto> dtoAtomic = new AtomicReference<>(buildEmptyDto());
return tuples.stream()
.map(tuple3 -> {
return Mono.zip(tuple3.getT2(), tuple3.getT3(),
(object2, object3) -> {
Dto dto = dtoAtomic.get();
dtoAtomic.set(dto);
return dto;
});
})
.collect(Collectors.toList())
.stream()
.findFirst()
.orElse(Mono.just(dtoAtomic.get()))
但是只能获取一个 Mono.zip(...) 但我需要获取所有的元组。
【问题讨论】:
-
.findFirst()做什么?必须尝试删除.findFirst()?? -
否则无法从流中获取部分元素
-
为什么需要使用
stream()? -
什么是 dto 和 Dto?它们是否与 Object1、Object2、Object3、object2、object3 有某种关系。从代码sn-p看不清楚。
标签: java reactive-programming project-reactor