Akka流代码:
Source.range(1, 100).map(i -> {
return Stream.of(i*4).toList();
}).runWith(Sink.foreach(a ->System.out.println(a)), materializer);
我想创建一个方法,说printList()
并移动runWith
代码(Sink.foreach(a ->System.out.println(a))
),所以应该像这样runWith(printList(), materializer)
printList()
方法将必须返回Sink
或可运行的图形/接收器形状。我不明白您要在这里做什么,所以我将分解一些令我困惑的事情,也许这将有助于您制定出更好的代码:
Source.range(1, 100)
是一个很好的开始,将从1到100一次输出一个整数。
下一步,map(i -> Stream.of(i * 4).toList())
是我开始困惑的地方。这将返回一个List<Integer>
,其元素恰好为[[one:i x 4(所以依次为4、8、12、16等)。没有[List]的相同效果可以简单地通过map(i -> i * 4)
来实现...这将返回上游Source的每个元素乘以四。
runWith(Sink.foreach(a -> System.out.println(a)), mat)
...,它将收到其中包含一个元素的列表100次。如果要获取100个整数元素的Source并将它们放入列表中,则可以使用Sink运算符来完全做到这一点:Sink.seq()
。但是,您必须确保Source实际上是有限的,否则您将永远无法到达此Sink运算符创建的集合的末尾。