Mithilfe eines Streams muss man nicht mehr selbst eine Iteration über z.B. ein Array programmieren.
Das Erledigt der Stream selbst im Hintergrund.
Die Bedinungen in den stream Operationen wie z.B. bei filter() muss man als Lambda-Ausdruck schreiben
…
.filter(w -> w >= 10)
Arrays muss man anders streamen, als z.B. Listen:
Arrays.stream(NameDesArrays)
Mit allem anderen geht das so:
Man kann einen Stream mit int als Datentyp erzeugen und über diese iterieren.
1 ist der Startwert
.limit(100) sagt aus, dass man die ersten 100 Ergebnisse haben will, NICHT die Zahlen, die unter 100 sind!
Es wird erst die 1 ausgegeben und dann immer die Zahl von vorher + 2.
Wenn man möchte, kann man die Operationen auch hintereinandern anstatt untereinander schreiben:
Beispiele für terminale Operationen:
ForEach()
FindFirst()
FindAny()
Die match()-Methoden
Die min() und max() Methoden
Eine if-Anweisung wird durch .filter() ersetzt und die Zuweisung String s = … durch .map()
Die wichtigsten stream Operationen:
.filter(s -> s <= 10)
filtert jedes Element nach einem gewissen Kriterium.
.findFirst()
Liefert das erste Element, was dem Kriterium entspricht. Kommt unter der .filter() Operation.
.anyMatch(n -> n == 5)
Liefert true oder false zurück je nachdem ob das Kriterium auf mindestens ein Element des streams zutrifft.
.map(wort -> Integer.parseInt(wort))
erzeugt einen “umgeformten” stream. Bildet auf das Kriterium ab.
.mapToFloat(Buch: : gibPreisInEuro())
erzeugt einen stream, dessem Elemente aus einem anderen Typ bestehen.
Gibt es auch als .mapToInt(), .mapToDouble() und .mapToLong()
.sorted()
Sortiert die Elemete des streams der Größe bzw. alphabetisch. Oder man muss in der Klasse anpassen, wann ein Element vor einem anderen ist.
.toArray()
Gibt ein Array mit den Elementen des streams zurück.
.sum()
Summiert alle Werte des streams.
.iterate(1, s -> s + 2)
.limit(100)
.iterate() und .limit() tauchen fast immer zusammen auf. Man sagt, dass das erste Element die 1 ist. Das wird mit 2 addiert. Dieses Element ist dann wieder “s” und wird auch wieder mit 2 addiert. Das macht man 100 mal. Limit ist nötig, sonst geht der stream unendlich lange.
Last changed2 years ago