Comment puis-je convertir un ArrayList<String>
à un objet String[]
tableau en Java ?
Il montre cet avertissement dans logcat : Conversion en chaîne de caractères : TypedValue{t=0x12/d=0x0 a=3 r=0x7f050009}
Comment puis-je convertir un ArrayList<String>
à un objet String[]
tableau en Java ?
List<String> list = ..;
String[] array = list.toArray(new String[0]);
Par exemple :
List<String> list = new ArrayList<String>();
//add some stuff
list.add("android");
list.add("apple");
String[] stringArray = list.toArray(new String[0]);
El toArray()
sans passer d'argument renvoie Object[]
. Vous devez donc passer un tableau comme argument, qui sera rempli avec les données de la liste, et renvoyé. Vous pouvez également passer un tableau vide, mais vous pouvez aussi passer un tableau avec la taille désirée.
Mise à jour importante : À l'origine, le code ci-dessus utilisait new String[list.size()]
. Cependant, ce blogpost révèle qu'en raison des optimisations de la JVM, utiliser new String[0]
est mieux maintenant.
Il montre cet avertissement dans logcat : Conversion en chaîne de caractères : TypedValue{t=0x12/d=0x0 a=3 r=0x7f050009}
@ThorbjørnRavnAndersen : la taille du tableau ne fait aucune différence d'un point de vue fonctionnel, mais si vous le transmettez avec la bonne taille, vous épargnez à la JVM le travail de le redimensionner.
Il s'avère que fournir un tableau de longueur nulle, même en le créant et en le jetant, est en moyenne plus rapide que d'allouer un tableau de la bonne taille. Pour des benchmarks et des explications, voir ici : shipilev.net/blog/2016/rays-wisdom-ancients
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Avoir a fait cette réponse avec une approche actualisée avec JDK-11 en introduisant une nouvelle API tout aussi performante pour
toArray(T[])
et dont la syntaxe est similaire à celle deStream.toArray
.