将一对列表拆分为两个列表 - 第一个列表和使用RxJava的第二个列表?

时间:2018-05-08 19:57:11

标签: rx-java rx-java2

如果我有一对Observable of Pairs:Observable<Pair<String, String>> source = ... 我在它上面调用toList()来获得对的列表,有没有办法将它转换为两个单独的列表 - 第一个列表和一个秒列表?意思是,做这样的事情,但使用Rx运算符:

Observable<Pair<String, String>> source = ...;
List<String> allFirsts = new ArrayList<>();
List<String> allSeconds = new ArrayList<>();

for (Pair p : source.toList()) {
 allFirsts.add(p.first);
 allSeconds.add(p.second);
}

1 个答案:

答案 0 :(得分:0)

collect将这些项目转换为Pair<List<String>, List<String>>

source.collect(
    () -> new Pair<List<String>,List<String>>(
        new ArrayList<String>(), new ArrayList<String>()),
    (collection, pair) -> {
        collection.first.add(pair.first);
        collection.second.add(pair.second); 
     });