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