有人可以展示一个如何通过Reactor框架执行 map/reduce 操作的代码示例吗?
假设我有一个Collection<Map>
. 我想要:
同时将每个
Map
实例转换为类型的对象Foo
(每个实例完全独立于另一个实例 - 无需串行/迭代地转换每个实例)。当所有这些都被转换时,我想要
onReduce(Collection<Foo> foos)
调用一个方法, , - 参数包含所有结果Foo
实例。
在我看来,你根本不需要reduce
。和collect
适合consume
你:
@Test
public void testCollect() {
Stream<String> stream = Streams.defer(Arrays.asList("1", "2", "3", "4", "5")).get();
stream.map(Integer::parseInt)
.collect()
.consume(integers -> assertThat(integers, Matchers.contains(1, 2, 3, 4, 5)));
}
此示例 (Java 8) 演示了如何将 a 发送List<String>
到 Reactor's Stream
,将每个转换item
为String
,将collect
它们转换为 theList<Integer>
并对process
结果执行操作List
。
更新
collect(5)
不需要注意:Stream
适用batchSize
于 defered Collection
。貌似.collect(int batchSize)
最近才推出。