运算符 – RxJava返回函数中的已订阅值

出于某种原因,我有时想使用RxOperators而不是普通的 java方式转换数据结构,因为它更干净,更清洁.例如:
Observable.from(listofStrings)
.filter(string -> string.getNumber() >5)
.toList()

有没有办法等待observable的结果并在函数中返回:这样做(但它不起作用):

private String getFilteredString(String string){
   Observable.from(listofStrings)
       .filter(string -> string.getNumber() >5)
       .toList()
       .subscribe(finalStirng -> {
       return finalString;
       })
}

解决方法

您可以使用.toBlocking()将任何Observable转换为同步Observable:
private List<String> getFilteredString(List<String> strings) {
  return Observable.from(strings)
      .filter(string -> string.length() > 5)
      .toList()
      .toBlocking()
      .single();
}

更新:
虽然上面的代码完全有效并且可以按预期工作,但这并不是RxJava的使用方式.如果您的唯一目标是转换集合,那么有更好的方法

> Java 8有一个Stream API
> Guava有自己的collections API
> Apache有一个commons-collections

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...