Es wurden neue Methoden hinzugefügt, java.util.Arrays
um ein Array in einen Java 8-Stream zu konvertieren, der dann zum Summieren usw. verwendet werden kann.
int sum = Arrays.stream(myIntArray)
.sum();
Das Multiplizieren von zwei Arrays ist etwas schwieriger, da ich mir keine Möglichkeit vorstellen kann, den Wert UND den Index gleichzeitig mit einer Stream-Operation zu erhalten. Dies bedeutet, dass Sie wahrscheinlich über die Indizes des Arrays streamen müssen.
//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...
int[] result = new int[a.length];
IntStream.range(0, a.length)
.forEach(i -> result[i] = a[i] * b[i]);
BEARBEITEN
Commenter @Holger weist darauf hin, dass Sie die map
Methode anstelle der folgenden verwenden forEach
können:
int[] result = IntStream.range(0, a.length).map(i -> a[i] * b[i]).toArray();
int[] result=IntStream.range(0, a.length).map( i->a[i]* b[i]).toArray();
mapToInt
, um Boxen zu vermeiden.Sie können ein Array in einen Stream verwandeln, indem Sie Folgendes verwenden
Arrays.stream()
:Sobald Sie Ihren Stream haben, können Sie eine der in der Dokumentation beschriebenen Methoden verwenden , wie
sum()
oder was auch immer. Sie könnenmap
oderfilter
möchten in Python, indem Sie die relevanten Stream-Methoden mit einer Lambda-Funktion aufrufen:Sobald Sie Ihren Stream geändert haben, rufen Sie ihn
toArray()
auf, um ihn wieder in ein Array zu konvertieren und an anderer Stelle zu verwenden:quelle
Seien Sie vorsichtig, wenn Sie mit großen Zahlen umgehen müssen.
Die obige Summe ist nicht
2 * Integer.MIN_VALUE
. In diesem Fall müssen Sie dies tun.quelle
Bitte beachten Sie, dass Arrays.stream (arr) einen LongStream (oder IntStream, ...) anstelle von Stream erstellt, sodass die Map-Funktion nicht zum Ändern des Typs verwendet werden kann. Aus diesem Grund werden die Funktionen .mapToLong, mapToObject, ... bereitgestellt.
Werfen Sie einen Blick darauf, warum-i-map-Ganzzahlen-zu-Zeichenfolgen-beim-Streaming-von-einem-Array-sind
quelle