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();
}
建议:请不要在方法的首字母中使用大写
我正在尝试 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();
}
建议:请不要在方法的首字母中使用大写