如何将Mono<List<MasterPair>>转换为Mono<List<Long>>类型
实现方法
你只需要调用Mono的map操作符,对Mono内部包裹的List<MasterPair>做同步映射转换,提取每个元素的id字段收集为新的Long列表即可,不需要额外嵌套其他响应式操作符。
示例代码
// 建议和原变量名区分开,避免变量遮蔽问题 Mono<List<Long>> idList = list.map(masterPairList -> masterPairList.stream() // 如果没有定义getId方法,可直接写 pair -> pair.id 访问字段 .map(MasterPair::getId) // Java 16+ 可直接用toList(),低版本替换为.collect(Collectors.toList()) .toList() );
注意事项
- 如果你的JDK版本低于16,需要把流末尾的
.toList()替换为.collect(java.util.stream.Collectors.toList())。 - 如果集合中可能存在null的
MasterPair实例,可以在stream中加.filter(java.util.Objects::nonNull)提前过滤空值,避免触发空指针异常。 - 这个场景不要用
flatMap操作符,flatMap适用于映射逻辑返回另一个响应式Publisher的场景,这里同步集合转换用map性能更好、写法更简洁。
内容的提问来源于stack exchange,提问作者user1285928
相关产品推荐
相关产品推荐

