当前位置: 首页 > 知识库问答 >
问题:

如何获取一个Flux中没有出现在另一个Flux中的元素

夏博
2023-03-14

我是Spring Reactive Project的新手。使用中出现问题。我有两个Flux,一个有更多元素,例如

Flux<Integer> bigFlux = Flux.range(1, 10);

还有人喜欢

Flux<Integer> smallFlux = Flux.just(3, 7);

如何获取bigFlux中未出现在smallFlux中的元素?我不知道该用哪个接线员。

我尝试过:

Flux<Integer> flux = bigFlux.filterWhen(one -> smallFlux.hasElement(one).map(a->!a));

但这并不明智,我通过复杂的操作获得了smallFlux,例如查询数据库、平面图操作。这样,bigFlux中有多少元素,这些操作将重复多少次。

事实上,小通量是通过这种方式获得的。

Flux<File> usedFile = repository.findAll()
                .flatMap(one -> {
                    List<File> used = someMethods(one);
                    return Flux.fromIterable(used);
                });

还有其他更好的解决方案吗,谢谢。

共有1个答案

卓麒
2023-03-14

我认为这将是一个更干净、更快的解决方案

final Flux<Integer> bigListFlux = Flux.just(1, 2, 3);

final Flux<Integer> smallListFlux = Flux.just(3, 5, 6);

Mono.zip(bigListFlux.collectList(), smallListFlux.collectList(), (bigList, smallList) -> {

  bigList.removeAll(smallList);

  return bigList;
}).flatMapMany(Flux::fromIterable).map(element -> {

  System.out.println("element = " + element);

  return element;
}).subscribe(); // do not use subscribe/block in actual production code.

我使用了以下单声道的变体。邮政编码

https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#zip-Reactor。果心出版商单核Reactor。果心出版商Mono java。util。作用双功能-

 类似资料:
  • 我想压缩两个monos/Flux,但第二个(我将压缩的那个)与我已经拥有的第一个不同 例如: 可能吗?

  • 问题内容: 我有两个嵌套在App Component上的CarouselComponent和BannerComponent组件。我想在CarouselComponent中获得BannerComponent中的元素以进行滚动功能。 代码在这里; -– App.js -– BannerComponent.js -– CarouselComponent.js 我想知道在所有情况下如何在React js中

  • 首先,我对反应式编程有点陌生。在参加了一些关于reactor和spring 5.0的演讲后,我想自己尝试一下这个编程模型。 我有一个应用程序,它使用WebClient从不同的API构建两个Flux对象。我想将这2个对象组合成一个并将其返回给用户。 代码示例如下所示: 现在在我的handler方法中: 我应该使用反应器API中的什么方法来实现这一点?我找到了一些方法来组合像组合最新的对象,但是在这种

  • 这里Book是根类,即最终的CSV将命名为books.CSV。 使用,我们只获得字段名title和author,但是我们还需要来自author类的字段名(name和age),有没有方法获得这些字段名?

  • 我有一个Staff类,其中包含特定工作人员的角色列表。我还有staffList,它保存staff对象。 如果我只是使用get索引直接从rolesList中获取值,它将不会显示任何问题。 我认为它得到的是rolesList的一个版本,但不是那个特定的Staff对象中的版本 我已经在roleList中创建了一个新的Staff成员和一个角色,然后在构造Staff对象时使用了列表,因此使用该对象的getR

  • 有可能做类似下面代码的事情吗?我有一个服务进行API调用,另一个返回值流。我需要用API调用返回的值修改每个值。 我尝试过用。repeat()处理单声道,它可以工作,但是每次有新的流量值时它都会调用方法,而且是API调用,所以不好。 有可能吗?