70 votes

Liste de conversion <String> to String [] en Java

Comment convertir une liste en tableau? Le code suivant renvoie une erreur.

 public static void main(String[] args) {
    List<String> strlist = new ArrayList<String>();
    strlist.add("sdfs1");
    strlist.add("sdfs2");
    String[] strarray = (String[]) strlist.toArray();       
    System.out.println(strarray);
}
 

Erreur:

 Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
    at test.main(test.java:10)
 

102voto

jjujuma Points 3909

Tu veux

 String[] strarray = strlist.toArray(new String[0]);
 

Voir ici pour la documentation et notez que vous pouvez également appeler cette méthode de telle sorte qu'elle remplisse le tableau transmis, plutôt que de simplement l'utiliser pour déterminer le type à renvoyer. Notez également que, si vous imprimez votre tableau, vous préféreriez peut-être

 System.out.println(Arrays.toString(strarray));
 

puisque cela va imprimer les éléments réels.

18voto

Paul Points 2086
public static void main(String[] args) {
    List<String> strlist = new ArrayList<String>();
    strlist.add("sdfs1");
    strlist.add("sdfs2");

    String[] strarray = new String[strlist.size()]
    strlist.toArray(strarray );

    System.out.println(strarray);


}

3voto

crazyscot Points 6675

List.toArray() renvoie nécessairement un tableau d'objets. Pour obtenir un tableau de String, vous devez utiliser la syntaxe de transtypage:

 String[] strarray = strlist.toArray(new String[0]);
 

Voir le javadoc pour java.util.List pour plus.

2voto

dfa Points 54490

J'ai conçu et implémenté Dollar pour ce type de tâches:

 String[] strarray= $(strlist).toArray();
 

0voto

iNPUTmice Points 90

Obtenez la taille de votre liste avec strlist.size() et créez un tableau de cette taille, puis remplissez-le en passant en boucle sur la liste.

Prograide.com

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.

Powered by:

X