从通量转换为单声道

Convert from Flux to Mono

如何将具有 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#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);