Wenn Sie mit Java 8 beginnen, brauchen Sie etwas Zeit, um sich daran zu gewöhnen. Es ist ein klassisches Problem, ich habe eine Reihe von Objekten, die ich transformieren möchte.
Vor Java8 wäre der ideale Code (keine Nullzeiger):
%Vor%Was ist die beste Version in Java8?
Die Verwendung eines Streams über ein Array ist eine feine Technik, wie in Tagir Valeevs Antwort beschrieben. Vergiss aber nicht Arrays.setAll
. Dies ist eine praktische Abkürzung, um alle Elemente eines Arrays basierend auf dem Index zu setzen. Um ein Array durch eine Funktion in ein neues Array umzuwandeln, könnten Sie dies tun:
Sie müssen es nicht in ein neues Array kopieren. Wenn Sie das Array an Ort und Stelle transformieren möchten, können Sie Folgendes tun:
%Vor% Es gibt auch eine parallele Variante parallelSetAll
.
Unter dem Deckblatt ist dies nur ein IntStream.range
über den Indizes des Eingabearrays, aber manchmal ist es für schnelle Einzeiler bequem.
Mit der Stream API ist es ganz einfach:
%Vor% Es kann auch eine Methodenreferenz verwendet werden (angenommen, dass I
der Typ der Eingabeelemente ist):
Beachten Sie, dass möglicherweise Probleme auftreten, wenn die Methode transformToP()
ausgewählte Ausnahmen auslöst. In diesem Fall konvertieren Sie sie in unmarkierte oder konsultieren Sie diese Frage.
Tags und Links java java-8 java-stream