RxJava组排序数据

时间:2019-02-22 06:47:34

标签: java rx-java reactive-programming

我有非常大量的数据收集,并且原始数据已经按照将成为关键的数据进行了排序。例如,我有一个CSV文件,第一列将成为分组的键。

A,x,x,x
A,x,y,x
A,z,y,y
C,x,s,d
C,t,d,s
B,a,s,a
E,x,x,x
E,t,r,y

这些行被转换为对象,并放入列表中,并使用RxJava Flowable进行流传输。因为此CSV将会非常庞大​​(非常庞大,以至于会导致应用程序崩溃),所以有一种很好的方法将这些对象转换为地图条目,如下所示:

{ 'A': [[x,x,x],[x,y,x],[z,y,y]] }

2 个答案:

答案 0 :(得分:1)

我现在正在使用viewController.extendedLayoutIncludesOpaqueBars = false。 一个例子是

FlowableTransformers.partialCollect

答案 1 :(得分:0)

使用rxjava2-extras中的collectWhile并指定集合工厂以生成特殊的键对象:


class Keyed {
    final K key;
    final List<Value> list;
    ...
}

K key(Value value) {
 ...
}

source.compose(
  Transformers.
    collectWhile(
      // factory
      () -> new Keyed(),
      // add
      (keyed, x) -> { 
          keyed.list.add(x);
          return keyed; },
      // condition
      (keyed, x) -> 
         keyed.list.isEmpty() ||
         key(x).equals(keyed.key)));