2010-03-31 12 views
65

¿Cómo convierto una lista en una matriz? El siguiente código devuelve un error.Conversión de la lista <String> a 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); 
} 

error:

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

Para la mayoría de las preguntas con un error, debe publicar el mensaje de error que está recibiendo. –

+1

Me gusta stackoverflow más. Gracias por el ranking 1 en google. – Ninjaxor

Respuesta

93

¿Quieres

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

Ver here para la documentación y tenga en cuenta que también se puede llamar a este método de manera tal que se rellena la matriz pasada, en lugar de solo usarlo para averiguar qué tipo devolver. También tenga en cuenta que, tal vez cuando imprima su matriz, preferiría

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

, ya que eso imprimirá los elementos reales.

+21

Usando strlist.toArray (new String [strlist.size()]); usualmente es más eficiente. –

3

List.toArray() necesariamente devuelve una matriz de Objeto. Para obtener un conjunto de cuerdas, es necesario utilizar la sintaxis de calidad:

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

consulte el Javadoc de java.util.List por más.

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

También estoy a favor de esta versión del método 'toArray' porque reutiliza el parámetro strarray, en lugar de devolver una nueva instancia –

2

He diseñado e implementado Dollar para este tipo de tareas:

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

Su $ API se ve muy bien, quizás dos métodos como 'ordenar' podrían aceptar comparadores que lo harían aún más útil. – Greg

+0

¡Gracias! No dude en enviarme parches o abrir solicitudes de funciones utilizando bitbucket. – dfa

+0

Para ver su implementación, tengo que instalar el programa 20M para 'clonar' su fuente de 254.3 KB. – Sawyer

0

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

si quieres Conversión de lista a la cadena use StringUtils.join (slist, '\ n');

Cuestiones relacionadas