Manchmal verwenden wir ein Array primitiver Typen wie "char" und "boolean". Mit der Stream-API für Arrays ist es häufig möglich, präzise zu arbeiten. "Arrays # stream" kann jedoch nicht auf andere primitive Arrays als "int", "long" und "double" angewendet werden. Notieren Sie sich daher, was in solchen Fällen zu tun ist.
Da "Arrays # stream" für Arrays eines beliebigen Objekttyps verwendet werden kann, wird die Methode zur Verwendung der Wrapper-Klasse verwendet.
final Character[] array = {...};
Arrays.stream(array)
...
Favorit So generieren Sie Indizes für das Zielarray mit "IntStream # range" und ordnen sie den Elementen des Arrays zu.
final char[] array = {...};
IntStream.range(0, array.length) //Beachten Sie, dass es nicht rangeClosed ist
.mapToObj(i -> array[i])
...
Stream # flatMap
ist praktisch, wenn Sie ein Doppelarray mit Stream gleichzeitig betreiben möchten.
Beispiel: Ich möchte überprüfen, ob alle Elemente eines Doppelarrays vom Typ "Boolean" "true" sind.
public void run() {
...
final boolean[][] table = ...;
Arrays.stream(table)
.flatMap(this::flatten)
.allMatch(Boolean::booleanValue);
}
private Stream<Boolean> flatten(final boolean[] array) {
return IntStream.range(0, array.length)
.mapToObj(i -> array[i]);
}
Recommended Posts