Rxjava 可观察的不兼容类型

Rxjava observable incompatible types

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

我认为这是与最后的计数有关,使它成为一个 long 但我不知道如何将它转换为字符串

错误很明显,您使用的是 .count(),其中 return Single<Long> 而不是 Observable<String>,您必须使用 :

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();
}

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