【问题标题】:Rxjava observable incompatible typesRxjava 可观察到的不兼容类型
【发布时间】:2019-12-05 09:17:59
【问题描述】:

我尝试使用 rxjava 返回一个单词在文本文档中出现的次数,我一直收到错误提示

incompatible types: Single Long cannot be converted to Observable String 

我正在使用的功能是:

static public Observable<String> WordCount(Observable<String> lineEmitter, String startTerm){
    return lineEmitter.flatMap(str -> Observable.fromArray(str.split("\\s")))
            .filter(str -> str.replaceAll("[^a-zA-Z0-9]", "").contains(startTerm))
            .count();
}

我认为这与最后的计数有关,但我不知道如何将其转换为字符串

【问题讨论】:

  • rxjava 2.0,依赖为2.2.12

标签: java observable rx-java


【解决方案1】:

错误很明显,您使用的是.count(),它返回Single&lt;Long&gt;,而不是Observable&lt;String&gt;,您必须使用:

static public Single<Long> wordCount(Observable<String> lineEmitter, String startTerm){
              ^^^^^^^^^^^

或者,如果您想获得 Long 的计数,您可以使用 .blockingGet()

static public Long WordCount(Observable<String> lineEmitter, String startTerm){
    return lineEmitter.flatMap(str -> Observable.fromArray(str.split("\\s")))
            .filter(str -> str.replaceAll("[^a-zA-Z0-9]", "").contains(startTerm))
            .count()
            .blockingGet();
}

建议:请不要在方法的第一个字母中使用大写

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多