Parfois, nous utilisons un tableau de types primitifs tels que «char» et «boolean».
Il est souvent possible d'opérer de manière concise en utilisant l'API Stream pour les tableaux.
Cependant, ʻArrays # stream ne peut pas être appliqué à des tableaux primitifs autres que ʻint
, long
et double
, alors notez ce qu'il faut faire dans de tels cas.
ʻArrays # stream` peut être utilisé pour les tableaux de n'importe quel type d'objet, utilisez donc la classe wrapper.
final Character[] array = {...};
Arrays.stream(array)
...
préféré ʻIntStream # range` est utilisé pour générer des index pour le tableau cible et les mapper aux éléments du tableau.
final char[] array = {...};
IntStream.range(0, array.length) //Notez que ce n'est pas rangeClosed
.mapToObj(i -> array[i])
...
Stream # flatMap
est pratique lorsque vous souhaitez exploiter un double tableau avec stream à la fois.
Exemple: je veux vérifier si tous les éléments d'un double tableau de type «booléen» sont «true».
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