我可以在Flowable中获取所有这些信息吗?或者我需要订阅shoppingListItems,然后在单独的Flowable中基于这个列表有唯一的recipeID列表
如果可能的话,哪一个是最好的解决方案
假设,您有购物项目,并且您希望获取每个唯一的接收器信息:
环境::
>
Rxjava 2.0.7
@Test
void name() {
Observable<Tuple2<ShoppingListItem, Recep>> tuple = getFromDb().flatMapIterable(i -> i)
.groupBy(shoppingListItem -> shoppingListItem.recepId)
.flatMap(g -> {
Observable<Recep> recep = getRecep(g.getKey());
return Observable.combineLatest(recep, g, (recep1, shoppingListItem) -> {
return Tuple.of(shoppingListItem, recep1);
});
});
TestObserver<Tuple2<ShoppingListItem, Recep>> test = tuple.test()
.assertValueCount(4)
.assertComplete()
.assertNoErrors();
List<Tuple2<ShoppingListItem, Recep>> values = test.values();
assertThat(values).extracting("_1").extracting("recepId").contains(0, 1);
assertThat(values).extracting("_1").extracting("id").containsExactly(0, 1, 2, 3);
assertThat(values).extracting("_2").extracting("id").containsExactly(1, 1, 0, 0);
}
Observable<List<ShoppingListItem>> getFromDb() {
List<ShoppingListItem> shoppingListItems = Arrays.asList(
new ShoppingListItem(0, 1),
new ShoppingListItem(1, 1),
new ShoppingListItem(2, 0),
new ShoppingListItem(3, 0)
);
return Observable.just(shoppingListItems);
}
Observable<Recep> getRecep(int id) {
return Observable.just(new Recep(id));
}
class Recep {
private final int id;
public Recep(int id) {
this.id = id;
}
}
class ShoppingListItem {
private final int id;
private final int recepId;
public ShoppingListItem(int id, int recepId) {
this.id = id;
this.recepId = recepId;
}
}
@Test
void name() {
Observable<Items> itemsObservable = getFromDb().flatMapSingle(shoppingListItems -> {
List<Integer> collect = shoppingListItems.stream().map(i -> i.recepId)
.distinct()
.collect(Collectors.toList());
return Observable.fromIterable(collect).flatMap(this::getRecep)
.toList()
.zipWith(Single.just(collect), (receps, integers) -> {
return new Items(receps, shoppingListItems);
});
});
TestObserver<Items> test = itemsObservable.test()
.assertValueCount(1)
.assertComplete()
.assertNoErrors();
Items items = test.values().get(0);
assertThat(items.receps).hasSize(2);
assertThat(items.shoppingListItems).hasSize(4);
}
Observable<List<ShoppingListItem>> getFromDb() {
List<ShoppingListItem> shoppingListItems = Arrays.asList(
new ShoppingListItem(0, 1),
new ShoppingListItem(1, 1),
new ShoppingListItem(2, 0),
new ShoppingListItem(3, 0)
);
return Observable.just(shoppingListItems);
}
Observable<Recep> getRecep(int id) {
return Observable.just(new Recep(id));
}
class Items {
private final List<Recep> receps;
private final List<ShoppingListItem> shoppingListItems;
Items(List<Recep> receps, List<ShoppingListItem> shoppingListItems) {
this.receps = receps;
this.shoppingListItems = shoppingListItems;
}
}
class Recep {
private final int id;
public Recep(int id) {
this.id = id;
}
}
class ShoppingListItem {
private final int id;
private final int recepId;
public ShoppingListItem(int id, int recepId) {
this.id = id;
this.recepId = recepId;
}
}
问题内容: 我有一个看起来像这样的列表列表: 删除重复列表的最佳方法是什么?使用上面的示例,我正在寻找会产生这种情况的代码: 我最初以为我可以使用,但这似乎不适用于列表列表。我还看到了一个使用的示例,但是代码对我来说并不完全清楚。谢谢您的帮助! 问题答案: uniq_animal_groups = set(map(tuple, animal_groups)) 尽管您将得到一组元组而不是一组列表,但
问题内容: 我想创建一个(或一组)所有出现在python列表中的唯一值的列表。我有这样的事情: 我想要以下内容: 我知道对于字符串列表,您只能使用set(aList),但是我无法弄清楚如何在列表列表中解决此问题,因为set(aList)会向我显示错误消息 我该如何解决? 问题答案:
问题内容: 请考虑下表: 在这里,我要找回它们是具有独特组合的记录,和。如果存在两个或多个这些字段的唯一组合,我想选择其中的第一个。 作为上表数据的示例,我需要的输出是 (由于记录3和4具有相同的组合,我想只记录3,因为它是第一次出现) 我可以使用一条SQL语句执行此操作吗? 问题答案:
问题内容: 我有 我想要 问题答案:
问题内容: 我试图了解获取列表的内容并将其附加到另一个列表是否有意义。 我通过循环功能创建了第一个列表,该列表将从文件中获取特定行并将其保存在列表中。 然后使用第二个列表保存这些行,并在另一个文件上开始新的循环。 我的想法是在for循环完成后获取列表,将其转储到第二个列表中,然后开始一个新的周期,将第一个列表的内容再次转储到第二个列表中,但追加它,因此第二个列表将我循环中创建的所有较小列表文件的总
问题内容: 我在此论坛和Google中搜索后发布了查询,但无法解决相同的问题。 我正在尝试根据列表1中的值过滤列表2(多列)。 码 在上面的代码中,如果我提供特定值,则可以过滤,但不确定如何检查列表2中的Car Name是否在列表1中退出。 希望我面对的问题很清楚,等待指导(对于Java来说还是比较新的,因此,如果上述查询非常基础,请原谅)。 编辑, 我相信上面提供的链接3应该可以解决,但就我而言
rank ▲ ✰ vote url 65 357 50 683 url 合并两个列表 怎样合并两个列表? 例如: listone = [1,2,3] listtwo = [4,5,6] 我期待: mergedlist == [1, 2, 3, 4, 5, 6] 在Python中非常容易. mergedlist = listone + listtwo