0

有人可以展示一个如何通过Reactor框架执行 map/reduce 操作的代码示例吗?

假设我有一个Collection<Map>. 我想要:

  1. 同时将每个Map实例转换为类型的对象Foo(每个实例完全独立于另一个实例 - 无需串行/迭代地转换每个实例)。

  2. 当所有这些都被转换时,我想要onReduce(Collection<Foo> foos)调用一个方法, , - 参数包含所有结果Foo实例。

4

1 回答 1

1

在我看来,你根本不需要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,将每个转换itemString,将collect它们转换为 theList<Integer>并对process结果执行操作List

更新

collect(5)不需要注意:Stream适用batchSize于 defered Collection。貌似.collect(int batchSize)最近才推出。

于 2014-04-03T18:29:56.640 回答