2010-03-31 21 views
65

Come si converte una lista in una matrice? Il seguente codice restituisce un errore.Conversione di lista <String> in stringa [] in 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); 
} 

Errore:

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

Per la maggior parte delle domande con un errore, è necessario pubblicare il messaggio di errore che si sta ricevendo. –

+1

Mi piace più lo stackoverflow. Grazie per aver ottenuto il primo posto su google. – Ninjaxor

risposta

93

Volete

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

Vedere here per la documentazione e la nota che si può anche chiamare questo metodo in modo tale che popola l'array passato, piuttosto che usarlo per capire che tipo restituire. Nota anche che forse quando stampi la tua matrice preferisci

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

poiché stamperà gli elementi reali.

+21

Utilizzo di strlist.toArray (new String [strlist.size()]); è solitamente più efficiente. –

3

List.toArray() restituisce necessariamente un array di Object. Per ottenere un array di stringa, è necessario utilizzare la sintassi casting:

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

consultare Javadoc per java.util.List di più.

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

Preferisco anche questa versione del metodo 'toArray' perché riutilizza il parametro strarray, invece di restituire una nuova istanza –

2

Ho progettato e implementato Dollar per questo tipo di attività:

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

L'API $ sembra ottima, forse i metodi di coppia come 'sort' potrebbero accettare comparatori che lo renderebbero ancora più utile. – Greg

+0

Grazie! Sentiti libero di inviarmi patch o richieste di funzionalità aperte usando bitbucket. – dfa

+0

Per vedere la tua implementazione, devo installare il programma 20M per "clonare" la tua sorgente di 254,3 KB. – Sawyer

0

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

se si desidera che Lista converti in stringa usi StringUtils.join (slist, '\ n');

Problemi correlati