我正在尝试使用Rx转换flatten一个List。下面是当前的代码:
rxflatten(treeList).subscribe(new Action1<List<Object>>() {
@Override
public void call(List<Object> objects) {
Log.d("test", "original= " + treeList + " flattened=" + objects) ;
}
});
public static Observable<Object> rxflattenmylist(List<?> list) {
return Observable.from(list)
.flatMap(item -> item instanceof List<?> ? rxflattenmylist((List<?>) item) : Observable.just(item));
}
public static Observable<List<Object>> rxflatten(List<?> list) {
return rxflattenmylist(list)
.toList();
}
这是第一个数据集
private static List<Object> a(Object... a) {
return Arrays.asList(a);
}
List<Object> treeList = a(a(1), 2, a(a(3, 4), 5), a(a(a())), a(a(a(6))), 7, 8, a());
使用此数据集,将生成以下输出:
original = [[1],2,[[3,4],5],[[[]]],[[[6]]],7,8,[]]变平= [1,2] ,3,4,5,6,7,8]
这是第二个数据集
private Object[] mNestedArrays = new Object[] {
new Object[] { new Integer[] { 1, 2 }, new Integer[] { 3, 4 }},
new Integer[] { 5, 6 }
};
List<Object> treeList = Arrays.asList(mNestedArrays);
我试图使用上面的数据集做同样的事情,但它不会展平,而是只发出前2项(对象和整数数组)。
以下是此数据集的输出:
original = [Ljava.lang.Object; flattened = [[Ljava.lang.Object;,[Ljava.lang.Integer;]
那么我如何使用RxJava压扁第二个数据集?
谢谢!