java - Rxjava 可观察的不兼容类型

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

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

最佳答案

错误很明显,您正在使用 .count()返回 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();
}
<小时/>

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

关于java - Rxjava 可观察的不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59191777/

相关文章:

java - 如何延迟 RxJava2 订阅?

java - 如何使用 RxJava 和 RxAndroid 获取带条件的 map ?

java - 如何在 gradle 依赖项的依赖项中指定分类器?

java - android ListView onclick

javascript - 如何观察第三方对象的属性值变化?

android - RxJava 中的 CompositeDisposable 是什么

java - 如何在java中返回字符串中最长的字符序列?

java - 原型(prototype) Bean 没有按预期 Autowiring

async-await - 如何等待订阅功能以角度 8 完成?

angular - 在渲染 View /模板之前等待 Angular 2 加载/解析模型