Kapitel 13. Streams, Iterables und Sequenzen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Sowohl Java als auch Kotlin ermöglichen es uns, Sammlungen umzuwandeln und zu reduzieren. Sie haben jedoch unterschiedliche Designziele und Implementierungen. Was verwendet Kotlin anstelle von Java-Streams, wann sollten wir umwandeln und wie?
Java Streams
Java 8 hat 2014 Streams eingeführt, die die neuen Lambdas gut nutzen. Angenommen, wir wollen die durchschnittliche Länge einiger Strings ermitteln, wobei leere Strings (solche mit nur Leerzeichen) so behandelt werden sollen, als wären sie leer. Früher hätten wir vielleicht geschrieben:
public
static
double
averageNonBlankLength
(
List
<
String
>
strings
)
{
var
sum
=
0
;
for
(
var
s
:
strings
)
{
if
(!
s
.
isBlank
())
sum
+=
s
.
length
();
}
return
sum
/
(
double
)
strings
.
size
();
}
Mit Java-Streams können wir diesen Algorithmus als filter
, map
und reduce
ausdrücken, indem wir zuerst List
in Stream
umwandeln und Transformationen anwenden:
public
static
double
averageNonBlankLength
(
List
<
String
>
strings
)
{
return
strings
.
stream
()
.
filter
(
s
->
!
s
.
isBlank
())
.
mapToInt
(
String:
:
length
)
.
sum
()
/
(
double
)
strings
.
size
();
}
Anstatt die for-Schleife in unserem Kopf ablaufen zu lassen, um zu sehen, was dieser Code macht, können wir die Schritte des Algorithmus Zeile für Zeile deklarieren und uns darauf verlassen, dass die Laufzeit diese Schritte für uns implementiert.
Wenn wir ...
Get Von Java zu Kotlin now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.