Преобразование из Flux в Mono

Как я могу преобразовать Flux с 1 элементом в Mono?

Flux.fromArray(arrayOf(1,2,1,1,1,2))
                .distinct()
                .take(1)

Как мне сделать это моно (1)?


person Valahu    schedule 03.02.2017    source источник


Ответы (3)


Вместо take(1) вы можете использовать next().

Это преобразует Flux в оцениваемый Mono, взяв первый испущенный элемент, или пустой Mono, если сам поток пуст.

person Simon Baslé    schedule 03.02.2017

Вот список:

  • 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#publishNext для первого найденного элемента. flux.publishNext();

  • Flux#reduce для редукции op. Например: flux.reduce((i1,i2) -> i1);

person Aniket Sahrawat    schedule 07.05.2020

Или вы можете использовать single () для отфильтрованного потока

person deepak kumar    schedule 18.12.2019