Java 11
La nouvelle valeur par défaut toArray
méthode dans Collection
permet de transférer les éléments de la collection vers un tableau nouvellement créé du type d'exécution souhaité. Il prend IntFunction<T[]> generator
comme argument et peut être utilisé comme :
String[] array = set.toArray(String[]::new);
Il existe déjà une méthode similaire Collection.toArray(T[])
et cet ajout signifie que nous ne serons plus en mesure de passer null
comme argument car dans ce cas la référence à la méthode serait ambiguë. Mais c'est toujours bon puisque les deux méthodes lancent un NPE de toute façon.
Java 8
En Java 8, nous pouvons utiliser l'API streams :
String[] array = set.stream().toArray(String[]::new);
Nous pouvons également utiliser la version surchargée de la fonction toArray() qui prend IntFunction<A[]> generator
comme :
String[] array = set.stream().toArray(n -> new String[n]);
Le but de la fonction générateur ici est de prendre un entier (taille du tableau souhaité) et de produire un tableau de la taille souhaitée. Personnellement, je préfère la première approche utilisant la méthode de référence que la seconde utilisant l'expression lambda.
5 votes
Avec le
toArray()
qui est clairement mentionnée dans la Javadoc.2 votes
Solution Java 8 : stackoverflow.com/questions/5982447/
0 votes
Java 11 : utilisation des nouvelles
toArray()
méthode par défaut stackoverflow.com/a/32179686/1216775