我有一个数组列表列表。主列表中的每个列表都包含常量项目。 (在每个数组列表中说3个项目) 。我想要做的是我需要将每个列表的索引和作为新列表。 例如,如果我的主List包含像
这样的数组列表 1, 2, 3
1, 2, 3
1, 2, 3
然后我的结果列表应该是
3, 6, 9
我必须只使用RxJava。因为我对RxJava很新,所以我应该与我应该使用的操作员混淆。我尝试了很多方法,但由于那些方法不起作用,我没有提出问题。如果有人可以建议一个提示或建议,那将非常有帮助。提前致谢
我的来源列表是
List<ArrayList<Integer>> mainList;
我需要结果List<Integer> sumList
答案 0 :(得分:0)
这不是RxJava的主要目的,但你可以通过zip:
来实现List<List<Integer>> lists = new ArrayList<>();
for (int i = 0; i < 3; i++) {
lists.add(Arrays.asList(1, 2, 3));
}
Flowable<Integer> f = Flowable.zip(lists, a -> {
int sum = 0;
for (Object o : a) {
sum += (Integer)o;
}
return sum;
})
// as individual items
f.test()
.assertResult(3, 6, 9);
// as one list
f.toList()
.test()
.assertResult(Arrays.asList(3, 6, 9));
答案 1 :(得分:0)
1)您应该在build.gradle(应用级别)中添加以下RxMath依赖项。
compile 'io.reactivex:rxjava-math:1.0.0'
2)使用以下代码从数组或列表中添加整数值的总和。
int totalCount = MathObservable.sumInteger(Observable.just(classesItemList)
.flatMapIterable(new Func1<List<ClassesItem>, Iterable<? extends ClassesItem>>() {
@Override
public Iterable<? extends ClassesItem> call(List<ClassesItem> list) {
return list;
}
})
.map(new Func1<ClassesItem, Integer>() {
@Override
public Integer call(ClassesItem classesItem) {
return classesItem != null ? classesItem.getStudentsCount() : 0;
}
})).toBlocking().single();
3)在任何地方使用总计数。