gpt4 book ai didi

java - 我如何在 smallrye mutiny 中对 Multi 进行排序

转载 作者:行者123 更新时间:2023-12-05 03:48:26 25 4
gpt4 key购买 nike

其他响应式(Reactive)库如 project reactor 为 Publishers 提供了排序方法,但在 mutiny 中没有这样的方法。他们的文档甚至没有谈论它。

https://smallrye.io/smallrye-mutiny

现在我正在通过这样做实现上述功能

multi.collectItems()
.asList()
.map(
list -> {
list.sort();
return list;
})
.convert()
.with(listUni -> Multi.createFrom().iterable(listUni.await().indefinitely()))

有没有更好的方法来做同样的事情?

最佳答案

我不相信有内置/更好的方法来做到这一点。

Mutiny 通常以在其核心中拥有一组“精简”运算符而自豪,并允许您根据需要构建其他更复杂的运算符。他们试图避免 react 堆情况,即您在几个核心类型上有 100 多个方法,并且如果没有大量背景知识,通常很难知道哪些是相关的。

恕我直言,这不是坏事。其他响应式框架肯定有这些内置的 sort() 运算符,但这里有一个危险——人们认为他们仍然可以将它们视为无限的、神奇排序的发布者,因为在任何地方都没有任何集合的迹象。你当然不能——在内部,这些框架必须维护一个底层集合来对数据进行排序,然后在流完成时输出它的内容。然而,这并不是那么清楚,对这一事实的无知通常会导致意外的减速和 OutOfMemoryError。相反,在您的示例中,很明显该流使用底层集合对数据进行排序。

在您的示例中我只更改了一件小事,但与您的问题并没有真正相关 - 我会使用:

list.stream().sorted().collect(Collectors.toList())

...在您的 map 调用中而不是对可变列表进行排序。在 react 流中改变数据结构有点代码味道。

关于java - 我如何在 smallrye mutiny 中对 Multi 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64377747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com