RxJava使用集合转换Single

时间:2018-01-10 15:29:47

标签: java rx-java rx-java2

给定Single Set字符串值

    Single<Set<String>> sss = Single.just(Sets.newHashSet("1" , "2", "3"));

我想将此转换为应包含转换为Integers的元素的Single<Set<Integer>>。假设从String到Integer的转换非常昂贵,并且每个元素都应该并行转换。怎么做到这一点?

我尝试将其转换为Observable,但无法将其合并回Single

    Single<Set<Integer>> ssi = sss.toObservable()
        .flatMapIterable(e -> e)
        .map(Integer::parseInt)
        .join()//??

1 个答案:

答案 0 :(得分:0)

使用并行扩展名:

Single<Set<String>> sss = Single.just(Sets.newHashSet("1" , "2", "3"));

Single<Set<Integer>> ssi = sss
    .flattenAsFlowable(e -> e)
    .parallel()
    .runOn(Schedulers.computation())
    .map(Integer::parseInt)
    .sequential()
    .toList(HashSet::new);