[英]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.