Collections Débutant

Convertit des streams en tableaux typés avec une référence de méthode.

✕ Pre-Streams
List<String> list = getNames();
List<String> filtered = new ArrayList<>();
for (String n : list) {
    if (n.length() > 3) {
        filtered.add(n);
    }
}
String[] arr = filtered.toArray(new String[0]);
✓ Java 8+
String[] arr = getNames().stream()
    .filter(n -> n.length() > 3)
    .toArray(String[]::new);
Un problème avec ce code ? Dites-le nous.
🎯

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
Filtrage manuel + copie
Approche Moderne
toArray(generator)
Depuis JDK
8
Difficulté
Débutant
toArray typé dans les streams
Disponible

Disponible depuis JDK 8 (mars 2014)

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.