Java 8 - die beste Art, Array-Elemente zu konvertieren

8

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?

    
ic3 14.08.2015, 07:54
quelle

2 Antworten

6

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:

%Vor%

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.

    
Stuart Marks 14.08.2015, 20:27
quelle
12

Mit der Stream API ist es ganz einfach:

%Vor%

Es kann auch eine Methodenreferenz verwendet werden (angenommen, dass I der Typ der Eingabeelemente ist):

%Vor%

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.

    
Tagir Valeev 14.08.2015 08:07
quelle

Tags und Links