小编lim*_*mbo的帖子

Java 8 流 - 增量收集/部分减少/间歇映射/...这叫什么?

我正在处理遵循以下模式的潜在无限数据元素流:

E1 <start mark> E2 foo E3 bah ... En-1 bar En <end mark>

也就是说,<String> 流必须先累积在缓冲区中,然后才能将它们映射到对象模型。

目标:将 a 聚合Stream<String>为 a,Stream<ObjectDefinedByStrings> 而无需收集无限流的开销。

用英语来说,代码类似于“一旦看到开始标记,就开始缓冲。缓冲直到看到结束标记,然后准备返回旧缓冲区,并准备一个新缓冲区。返回旧缓冲区。”

我当前的实现形式如下:

Data<String>.stream()
            .map(functionReturningAnOptionalPresentOnlyIfObjectIsComplete)
            .filter(Optional::isPresent)
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  1. 这个操作正确的名称是什么?(即我可以通过 Google 搜索更多示例吗?我发现的每个讨论都.map()涉及 1:1 映射。每个关于 .reduce 的讨论)都涉及 n:1 缩减。每次讨论都.collect()讨论将累积作为终端操作......)

  2. 从很多方面来看,这似乎都很糟糕。有更好的方法来实现这个吗?(候选人的形式.collectUntilConditionThenApplyFinisher(Collector,Condition,Finisher)......?)

谢谢!

java reduce dictionary java-8 java-stream

5
推荐指数
1
解决办法
2181
查看次数

标签 统计

dictionary ×1

java ×1

java-8 ×1

java-stream ×1

reduce ×1