java - RxJava 分组排序数据

标签 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 会很大(大到会导致应用程序崩溃),有没有一种好方法可以将这些对象转换成 map 条目,看起来像这样:

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

最佳答案

我现在正在使用 FlowableTransformers.partialCollect。 一个例子是

Flowable.fromPublisher(FlowableTransformers.partialCollect(
        (Consumer<PartialCollectEmitter<LineData, Integer, 
        ListBuilder, ListDataModel>>) emitter -> {
            // Get or initialize collecting object
            ListBuilder lb = emitter.getAccumulator();
            if (lb == null) {
                lb = new ListBuilder();
                emitter.setAccumulator(lb);
            }

            if (emitter.demand() != 0) {
                boolean d = emitter.isComplete();
                if (emitter.size() != 0 && !d) {
                    LineData data = emitter.getItem(0);
                    emitter.dropItems(1);

                    // add returns the finished model if the prefix changes
                    ListDataModel model = lb.add(data);

                    if (model != null) {
                        emitter.next(model);
                    }
                } else if (d) {
                    if (!lb.isEmpty()) {
                        // clear returns the last model
                        emitter.next(lb.clear());
                    }
                    emitter.complete();
                    return;
                }
            }
            emitter.setIndex(0);
        }, Functions.emptyConsumer(), settings.getReadBufferSize() + 1).apply(
                Flowable.fromIterable(file.getFileNameList())
                        .concatMap(
                                fileName -> reader
                                        .getLineData(fileName)
                                        .buffer(settings.getReadBufferSize()))
                        .flatMap(Flowable::fromIterable)))

关于java - RxJava 分组排序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54821532/

相关文章:

java - Mono 对象未在 postman 中显示

java - 嵌套 future 不执行

java - SWT CheckBox 按钮获取选中/未选中状态

java - RxJava 组合可观察量而不重复执行

java - Flux的onComplete执行后如何返回Mono?

Spring 5 Web 响应式(Reactive)编程 - 从流数据的 Spring 响应式(Reactive) Controller 解码 JSON 时出现 WebClient ClassCastException

java - 如何重命名 firebase 中的分支/节点

java - 为什么这个 eclipse 错误显示以及它的解决方案应该是什么

java - 使用 RxJava2 时出现错误 "Callable returned null"

android - RxJava 和 Retrofit - Rx 的第一步