2010-03-31 5 views
65

Comment convertir une liste en tableau? Le code suivant renvoie une erreur.Conversion de la liste <String> en String [] en Java

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) 
+1

Pour la plupart des questions avec une erreur, vous devriez afficher le message d'erreur que vous recevez. –

+1

J'aime stackoverflow plus. Merci pour le classement 1 dans google. – Ninjaxor

Répondre

93

Vous voulez

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

Voir here pour la documentation et notez que vous pouvez également appeler cette méthode de telle manière qu'il renseigne le tableau passé, plutôt que de simplement l'utiliser pour déterminer quel type de retour. Notez également que peut-être lorsque vous imprimez votre tableau que vous préférez

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

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

+21

Utilisation de strlist.toArray (new String [strlist.size()]); est généralement plus efficace. –

3

List.toArray() renvoie nécessairement un tableau d'objet. Pour obtenir un tableau de chaîne, vous devez utiliser la syntaxe de coulée:

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

Voir la javadoc pour java.util.List plus.

18
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); 


} 
+2

Je privilégie aussi cette version de la méthode 'toArray' car elle réutilise le paramètre strarray, au lieu de retourner une nouvelle instance. –

2

J'ai conçu et mis en Dollar pour ce genre de tâches:

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

Votre API $ est superbe, peut-être que des méthodes comme 'sort' pourraient accepter des comparateurs qui le rendraient encore plus utile. – Greg

+0

Merci! N'hésitez pas à m'envoyer des correctifs ou à ouvrir des demandes de fonctionnalités en utilisant bitbucket. – dfa

+0

Afin de voir votre implémentation, je dois installer le programme 20M pour "cloner" votre source de 254,3 Ko. – Sawyer

0

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

si vous voulez Liste convertir en chaîne utilisez StringUtils.join (slist, '\ n');

Questions connexes