diff --git a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md b/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md index 3e92aeda27..5663f08af3 100644 --- a/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md +++ b/akka-docs/src/main/paradox/stream/operators/Source-or-Flow/grouped.md @@ -29,3 +29,13 @@ elements downstream. @@@ +## Examples + +Below example demonstrates how `grouped` groups the accumulated elements into @scala[`Seq`] @java[`List`] +and maps with other operation. + +Scala +: @@snip [Grouped.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala) { #grouped } + +Java +: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #grouped } diff --git a/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java b/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java index ab6a7aa214..945db072b5 100644 --- a/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java +++ b/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java @@ -252,4 +252,23 @@ class SourceOrFlow { .map(p -> new Pong(p.id)); // #collectType } + + void groupedExample() { + // #grouped + Source.from(Arrays.asList(1, 2, 3, 4, 5, 6, 7)) + .grouped(3) + .runForeach(System.out::println, materializer); + // [1, 2, 3] + // [4, 5, 6] + // [7] + + Source.from(Arrays.asList(1, 2, 3, 4, 5, 6, 7)) + .grouped(3) + .map(g -> g.stream().reduce(0, Integer::sum)) + .runForeach(System.out::println, materializer); + // 6 (= 1 + 2 + 3) + // 15 (= 4 + 5 + 6) + // 7 (= 7) + // #grouped + } } diff --git a/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala b/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala new file mode 100644 index 0000000000..c4a19cec41 --- /dev/null +++ b/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Grouped.scala @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2019 Lightbend Inc. + */ + +package docs.stream.operators.sourceorflow +import akka.stream.scaladsl.Source + +object Grouped { + def groupedExample(): Unit = { + import akka.actor.ActorSystem + + implicit val system: ActorSystem = ActorSystem() + + //#grouped + Source(1 to 7).grouped(3).runForeach(println) + // Vector(1, 2, 3) + // Vector(4, 5, 6) + // Vector(7) + + Source(1 to 7).grouped(3).map(_.sum).runForeach(println) + // 6 (= 1 + 2 + 3) + // 15 (= 4 + 5 + 6) + // 7 (= 7) + //#grouped + } + +}