从通量转换为单声道
Posted
技术标签:
【中文标题】从通量转换为单声道【英文标题】:Convert from Flux to Mono 【发布时间】:2017-06-20 15:59:19 【问题描述】:我怎样才能从一个有 1 个元素的 Flux 转换为一个 Mono?
Flux.fromArray(arrayOf(1,2,1,1,1,2))
.distinct()
.take(1)
如何使它成为 Mono(1)?
【问题讨论】:
【参考方案1】:您可以使用next()
,而不是take(1)
。
这会将Flux
转换为有价值的Mono
,方法是获取第一个发射的项目,或者如果 Flux 本身为空,则为空的 Mono。
【讨论】:
【参考方案2】:这是一个列表:
如果Flux
中有一个元素,Flux#single
将起作用。例如: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);
【讨论】:
【参考方案3】:或者,您可以在过滤后的 Flux 上使用 single()
【讨论】:
以上是关于从通量转换为单声道的主要内容,如果未能解决你的问题,请参考以下文章