doc: filter and filterNot streams operator, #25468
This commit is contained in:
parent
4b632c4537
commit
5f21c2264b
4 changed files with 114 additions and 0 deletions
|
|
@ -17,6 +17,18 @@ Filter the incoming elements using a predicate.
|
||||||
Filter the incoming elements using a predicate. If the predicate returns true the element is passed downstream, if
|
Filter the incoming elements using a predicate. If the predicate returns true the element is passed downstream, if
|
||||||
it returns false the element is discarded.
|
it returns false the element is discarded.
|
||||||
|
|
||||||
|
See also @ref:[`filterNot`](filterNot.md).
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
For example, given a `Source` of words we can select the longer words with the `filter` operator:
|
||||||
|
|
||||||
|
Scala
|
||||||
|
: @@snip [Filter.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filter }
|
||||||
|
|
||||||
|
Java
|
||||||
|
: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filter }
|
||||||
|
|
||||||
## Reactive Streams semantics
|
## Reactive Streams semantics
|
||||||
|
|
||||||
@@@div { .callout }
|
@@@div { .callout }
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,18 @@ Filter the incoming elements using a predicate.
|
||||||
Filter the incoming elements using a predicate. If the predicate returns false the element is passed downstream, if
|
Filter the incoming elements using a predicate. If the predicate returns false the element is passed downstream, if
|
||||||
it returns true the element is discarded.
|
it returns true the element is discarded.
|
||||||
|
|
||||||
|
See also @ref:[`filter`](filter.md).
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
For example, given a `Source` of words we can omit the shorter words with the `filterNot` operator:
|
||||||
|
|
||||||
|
Scala
|
||||||
|
: @@snip [Filter.scala](/akka-docs/src/test/scala/docs/stream/operators/sourceorflow/Filter.scala) { #filterNot }
|
||||||
|
|
||||||
|
Java
|
||||||
|
: @@snip [SourceOrFlow.java](/akka-docs/src/test/java/jdocs/stream/operators/SourceOrFlow.java) { #filterNot }
|
||||||
|
|
||||||
## Reactive Streams semantics
|
## Reactive Streams semantics
|
||||||
|
|
||||||
@@@div { .callout }
|
@@@div { .callout }
|
||||||
|
|
|
||||||
|
|
@ -348,4 +348,44 @@ class SourceOrFlow {
|
||||||
// 2
|
// 2
|
||||||
// #take-while
|
// #take-while
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void filterExample() {
|
||||||
|
// #filter
|
||||||
|
Source<String, NotUsed> words =
|
||||||
|
Source.from(
|
||||||
|
Arrays.asList(
|
||||||
|
("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt "
|
||||||
|
+ "ut labore et dolore magna aliqua.")
|
||||||
|
.split(" ")));
|
||||||
|
|
||||||
|
Source<String, NotUsed> longWords = words.filter(w -> w.length() > 6);
|
||||||
|
|
||||||
|
longWords.runWith(Sink.foreach(System.out::print), system);
|
||||||
|
// consectetur
|
||||||
|
// adipiscing
|
||||||
|
// eiusmod
|
||||||
|
// tempor
|
||||||
|
// incididunt
|
||||||
|
// #filter
|
||||||
|
}
|
||||||
|
|
||||||
|
void filterNotExample() {
|
||||||
|
// #filterNot
|
||||||
|
Source<String, NotUsed> words =
|
||||||
|
Source.from(
|
||||||
|
Arrays.asList(
|
||||||
|
("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt "
|
||||||
|
+ "ut labore et dolore magna aliqua.")
|
||||||
|
.split(" ")));
|
||||||
|
|
||||||
|
Source<String, NotUsed> longWords = words.filterNot(w -> w.length() <= 5);
|
||||||
|
|
||||||
|
longWords.runWith(Sink.foreach(System.out::print), system);
|
||||||
|
// consectetur
|
||||||
|
// adipiscing
|
||||||
|
// eiusmod
|
||||||
|
// tempor
|
||||||
|
// incididunt
|
||||||
|
// #filterNot
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Lightbend Inc. <https://www.lightbend.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package docs.stream.operators.sourceorflow
|
||||||
|
|
||||||
|
import akka.NotUsed
|
||||||
|
import akka.actor.ActorSystem
|
||||||
|
import akka.stream.scaladsl.Source
|
||||||
|
|
||||||
|
object Filter {
|
||||||
|
|
||||||
|
implicit val system: ActorSystem = ActorSystem()
|
||||||
|
|
||||||
|
def filterExample(): Unit = {
|
||||||
|
// #filter
|
||||||
|
val words: Source[String, NotUsed] =
|
||||||
|
Source(
|
||||||
|
("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt " +
|
||||||
|
"ut labore et dolore magna aliqua.").split(" ").toList)
|
||||||
|
|
||||||
|
val longWords: Source[String, NotUsed] = words.filter(_.length > 6)
|
||||||
|
|
||||||
|
longWords.runForeach(println)
|
||||||
|
// consectetur
|
||||||
|
// adipiscing
|
||||||
|
// eiusmod
|
||||||
|
// tempor
|
||||||
|
// incididunt
|
||||||
|
// #filter
|
||||||
|
}
|
||||||
|
|
||||||
|
def filterNotExample(): Unit = {
|
||||||
|
// #filterNot
|
||||||
|
val words: Source[String, NotUsed] =
|
||||||
|
Source(
|
||||||
|
("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt " +
|
||||||
|
"ut labore et dolore magna aliqua.").split(" ").toList)
|
||||||
|
|
||||||
|
val longWords: Source[String, NotUsed] = words.filterNot(_.length <= 5)
|
||||||
|
|
||||||
|
longWords.runForeach(println)
|
||||||
|
// consectetur
|
||||||
|
// adipiscing
|
||||||
|
// eiusmod
|
||||||
|
// tempor
|
||||||
|
// incididunt
|
||||||
|
// #filterNot
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue