2

我有两个助焊剂,其中包含如下水果名称。我想用水果名称和它的计数。

例如:

Flux<String> flux1 = Flux.just("apple", "orang", "banana", "mangoes", "mangoes");
Flux<String> flux2 = Flux.just("pears", "limes", "banana", "plums", "apple");

预期输出:apple -2、orang-1、banana-2、mangoes-2、pears-1、limes-1 等。

生成输出的更好方法是什么Flux<Map>?或任何其他最佳解决方案?

4

1 回答 1

3

由于Map是单个项目,您可以生成Mono<Map<String, Long>>如下:

Mono<Map<String, Long>> result = Flux.merge(flux1, flux2).groupBy(it -> it).flatMap(group -> Mono.zip(Mono.just(group.key()), group.count())).collectMap(Tuple2::getT1, Tuple2::getT2);

或者,您还可以获得Flux<Tuple2<String, Long>>如下:

Flux<Tuple2<String, Long>> result = Flux.merge(flux1, flux2).groupBy(it -> it).flatMap(group -> Mono.zip(Mono.just(group.key()), group.count()));
于 2020-01-08T12:12:35.570 回答