toArray typé dans les streams
Convertit des streams en tableaux typés avec une référence de méthode.
Comparaison de Code
✕ Pre-Streams
List<String> list = getNames();
String[] arr = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i);
}
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Sûr en termes de types
Sans cast vers Object[] — le type du tableau est correct.
Enchaînable
Fonctionne à la fin de n'importe quel pipeline de stream.
Concis
Une seule expression remplace la boucle manuelle.
Ancienne Approche
Copie manuelle de tableau
Approche Moderne
toArray(generator)
Depuis JDK
8
Difficulté
Débutant
Support JDK
toArray typé dans les streams
Disponible
Disponible depuis JDK 8 (mars 2014)
Comment ça fonctionne
La méthode toArray(IntFunction) crée un tableau correctement typé à partir d'un stream. Le générateur (String[]::new) indique au stream quel type de tableau créer.
Documentation Associée