簡體   English   中英

Rxjava多個可觀察列表

[英]Rxjava multiple observable List

我有兩個可觀察到的String列表。 我想使用zip或任何其他操作在rxjava中實現類似的功能。

如果list1有數據而list2沒有任何數據-考慮list1的數據集

如果list1沒有數據,而list2有任何數據-考慮list2的數據集

如果list1和list2都有數據,則取兩個list的交集

列表1具有0-n個元素,列表2具有0-m個元素。

使用RxJava尚無官方方法。 我建議在其中一個Observable上使用flatMap,然后通過另一個Observable過濾每個元素。 我目前無法測試,但應該可以。

編輯:類似:

list1
  .defaultIfEmpty(/*Observable with empty string, for instance (for the empty case)*/)
  .flatMap { element ->
    return list2.defaultIfEmpty(element).filter(x -> x == element);
  }
  .observeOn(...)
  .subscribeOn(...)
  .subscribe(...)

自從我使用RxJava已經有幾個月了,但是這種東西應該可以工作。

您可以使用zip來准備好兩個列表,然后需要根據它們的狀態進行選擇:

Single<List<Integer>> singleList1 = ...
Single<List<Integer>> singleList2 = ...

Single.zip(singleList1, singleList2, (list1, list2) -> {

    if (list1.isEmpty()) {
        return list2;
    }
    if (list2.isEmpty()) {
        return list1;
    }

    Set<Integer> set = new HashSet<>(list1);
    List<Integer> result = new ArrayList<>(list2.size());

    for (Integer i : list2) {
        if (set.contains(i)) {
            result.add(i);
        }
    }

    return result;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM