Rxjava可观察到的不兼容类型

时间:2019-12-05 09:17:59

标签: java observable rx-java

我正在尝试使用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();
}

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

1 个答案:

答案 0 :(得分:0)

错误很明显,您正在使用.count()返回Single<Long>而不是Observable<String>,而必须使用:

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

或者,如果您希望将计数加长,则可以使用.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();
}

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