52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
<!--
|
|
title: Streams
|
|
description: Folien für Streams in Programmieren 2
|
|
url: https://git.henriburau.de/tutorien/programmieren-2
|
|
header: Programmieren 2 **Tutorium**
|
|
footer: Henri Burau
|
|
-->
|
|
|
|
# Streams
|
|
|
|
Erleichtert das Verarbeiten von Sammlungen aus den Collection Framework.
|
|
|
|
---
|
|
|
|
# Grundlagen
|
|
|
|
Die [Stream-API](https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html) bietet Higher Order Functions (HOF) die auf Collections arbeiten. Dazu zählen:
|
|
* filter
|
|
* map
|
|
* fold
|
|
|
|
Die Verarbeitung erfolgt in drei Schritten: Erzeugung des Streams, Verarbeitung des Streams und zum Schluss Terminieren des Streams.
|
|
|
|
---
|
|
|
|
# Beispiel
|
|
|
|
```java
|
|
List<String> liste = new ArrayList<String>();
|
|
liste.addAll("was", "geht", "ab", "?");
|
|
|
|
int laenge = liste.stream().map(text -> text.length()).reduce(0, Integer::sum);
|
|
|
|
List<String> nurWoerter = liste.stream()
|
|
.filter(s -> s.matches("[a-zA-Z]"))
|
|
.collect(Collectors.toList());
|
|
|
|
int nurLangeWoerterLaenge = liste.stream()
|
|
.filter(s -> s.matches("[a-zA-Z]"))
|
|
.filter(s -> s.length() >= 3)
|
|
.map(s -> s.length())
|
|
.reduce(0, Integer::sum)
|
|
```
|
|
|
|
[`Stream:reduce(Binary)`](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#reduce-T-java.util.function.BinaryOperator-)
|
|
|
|
---
|
|
|
|
# Aufgabe
|
|
|
|
1) Berechne in `SummiererWerkzeug.setzeSumme()` die Summe der einzelnen Zähler mithilfe von Streams.
|