为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星淼淼 2021-12-18 15:17:08
我的目标是解开一个整数列表的单项列表,并获取它的所有元素,以便将它放在一个列表中。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。实现这一目标的正确方法是什么?
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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>


查看完整回答
反对 回复 2021-12-18
?
慕的地10843

TA贡献1785条经验 获得超8个赞

我在 Rx-Java 中做到了。


Lets consider below example to create List<Single<List<Integer>>> 


List<Integer> intList = new ArrayList<>();

Collections.addAll(intList, 10, 20, 30, 40, 50);


List<Integer> intList2 = new ArrayList<>();

Collections.addAll(intList2, 12, 22, 32, 42, 52);


List<Integer> intList3 = new ArrayList<>();

Collections.addAll(intList3, 13, 23, 33, 43, 53);


Single<List<Integer>> singleList = Single.just(intList);

Single<List<Integer>> singleList2 = Single.just(intList2);

Single<List<Integer>> singleList3 = Single.just(intList3);


List<Single<List<Integer>>> listOfSinglesOfListofInts = new ArrayList<>();


Collections.addAll(listOfSinglesOfListofInts, singleList, singleList2, singleList3);



Observable

    //Iterate through List<Singles>

    .fromIterable(listOfSinglesOfListofInts)

    //Get each single, convert to Observable and iterate to get all the integers

    .flatMap(

        singleListNew -> singleListNew

            .toObservable()

            //Iterate through each integer inside a list and return it

            .flatMapIterable(integers -> integers)

    )

    //Get all the integers from above and convert to one list

    .toList()

    //Result is List<Integer>

    .subscribe(

        result -> System.out.println("**** " + result.toString() + " ****"),

        error -> new Throwable(error)

    );

希望这可以帮助。


查看完整回答
反对 回复 2021-12-18
  • 2 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信