有人可以展示一个如何通过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)最近才推出。