【问题标题】:How can I implement / use maxBy in RxJava2?如何在 RxJava2 中实现/使用 maxBy?
【发布时间】:2018-01-19 14:29:56
【问题描述】:

如何在 RxJava2 中实现/使用 maxBy?我正在考虑收集/减少,但不知道将什么作为种子值传递(它应该是 Observable 发出的第一个元素,我可以使用一些默认值,但它看起来并不干净)。

【问题讨论】:

    标签: rx-java reactive-programming rx-java2


    【解决方案1】:

    您可以同时使用无种子和种子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 接口提供了一些您可能想要查看的功能工具。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2018-03-26
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多