【发布时间】:2018-01-19 14:29:56
【问题描述】:
如何在 RxJava2 中实现/使用 maxBy?我正在考虑收集/减少,但不知道将什么作为种子值传递(它应该是 Observable 发出的第一个元素,我可以使用一些默认值,但它看起来并不干净)。
【问题讨论】:
标签: rx-java reactive-programming rx-java2
如何在 RxJava2 中实现/使用 maxBy?我正在考虑收集/减少,但不知道将什么作为种子值传递(它应该是 Observable 发出的第一个元素,我可以使用一些默认值,但它看起来并不干净)。
【问题讨论】:
标签: rx-java reactive-programming rx-java2
您可以同时使用无种子和种子reduce:
Comparator<T> comparator = ... // define a relationship between Ts
source.reduce((last, current) ->
comparator.compare(last, current) >= 0 ? last : current);
例如,找出最长的字符串:
Observable.fromArray("a", "bb", "ccc", "d", "eee", "ffff")
.reduce((last, current) ->
Integer.compare(last.length(), current.length()) >= 0
? last : current)
.subscribe(System.out::println);
如果您使用的是 Java 8+,Comparator 接口提供了一些您可能想要查看的功能工具。
【讨论】:
【讨论】: