java - 如何从 List<Single<List<Int>>> 中收集所有整数并将其放入 RxJava 中的 List<Int> 中?

标签 java rx-java

我的目标是解包一个整数列表的单个列表,并获取它的所有元素,以便将它放在一个列表中。

List<Single<List<Int>>> listOfSinglesOfListofInts = getListSingleListType(); // random method that gives us that.
List<Int> intList = new ArrayList<>();

我的目标是将所有 Int 内容从 listOfSinglesOfListOfInts 移动到 listInt。这是我尝试过的:

ListOfSinglesOfListOfInt.stream().map(
    singleListOfInts -> singleListOfInts.map(
        listOfInts -> intList.addAll(listOfInts)
    )
);


return listInt;

listInt 的大小始终为 0。

完成此任务的正确方法是什么?

最佳答案

map操作直到 Flowable 才运行链完成。这Flowable已设置,但未执行。您可能想要做的是运行 Flowable压平形状后通过阻塞收集器。试试这个:

return Flowable.fromIterable(listOfSingleOfListofInt)
    .flatMap(singleOfListofInt -> singleOfListofInt.toFlowable())
    .flatMap(listofInt -> Flowable.fromIterable(listofInt))
    .toList()
    .blockingGet();

详情

Flowable.fromIterable(listOfSingleOfListofInt) :

  • 转换 List<Single<List<Int>>>进入Flowable<Single<List<Int>>>

flatMap(singleOfListofInt -> singleOfListofInt.toFlowable()) :

  • 转换 Flowable<Single<List<Int>>>进入Flowable<List<Int>>

flatMap(listofInt -> Flowable.fromIterable(listofInt)) :

  • 转换 Flowable<List<Int>>进入Flowable<Int>

toList() :

  • 转换 Flowable<Int>进入Signle<List<Int>>

blockingGet()

  • 转换 Signle<List<Int>>进入List<Int>

关于java - 如何从 List<Single<List<Int>>> 中收集所有整数并将其放入 RxJava 中的 List<Int> 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055009/

相关文章:

java - 为什么我不能用 BlockingQueue<Callable>; 实例化 ThreadPoolExecutor?为什么只有 BlockingQueue<Runnable>?

Java SWT - 缩放背景图像在编译后不起作用

java - 接收Java : Sleep before OnNext (Sleep before emitting from Observable)

java-8 - Java 8 流和 RxJava 可观察量之间的区别

android - 微调器的 RxBindings?

java - 如何将单选按钮设置为居中对齐

java - Tomcat 连接器如何工作?

java - 如何延迟 RxJava2 订阅?

java - 在 XML 标签之间跳转

java - 如何使用 RxJava 将 Listeners 正确转换为 Reactive(Observables)?