如何将包含1个元素的Flux转换为Mono?
Flux.fromArray(arrayOf(1,2,1,1,1,2))
.distinct()
.take(1)
我该如何将这个变为Mono(1)?
如何将包含1个元素的Flux转换为Mono?
Flux.fromArray(arrayOf(1,2,1,1,1,2))
.distinct()
.take(1)
我该如何将这个变为Mono(1)?
可以使用next()
替代take(1)
。
这将把Flux
转换为一个有值的Mono
,它会获取发出的第一个项目,或者如果Flux
本身为空,则返回一个空的Mono
。
以下是列表:
Flux#single
适用于从Flux
中取出一个元素的情况。例如:flux.take(1).single();
Flux#next
获取第一个元素。例如:flux.next();
Flux#last
获取最后一个元素。例如:flux.last();
Flux#singleOrEmpty
类似于 Optional
。例如:flux.take(0).singleOrEmpty();
Flux#collect
,它取决于使用情况。
flux.collect(Collectors.reducing((i1, i2) -> i1))
.map(op -> op.get());
使用Flux#elementAt
方法获取第i个元素,例如:flux.elementAt(1);
使用Flux#shareNext
方法获取第一个找到的元素,例如:flux.shareNext();
使用Flux#reduce
方法进行元素归约操作,例如:flux.reduce((i1, i2) -> i1);
或者,您可以在过滤后的Flux上使用single()