2013-02-08 18 views
16

Devo convertire da List<Object> a String[].Converti lista <Object> in stringa [] in Java

ho fatto:

List<Object> lst ... 
String arr = lst.toString(); 

ma ho ottenuto questa stringa:

["...", "...", "..."] 

è solo una stringa, ma ho bisogno String []

Grazie mille.

+1

Come si converte un oggetto casuale in una stringa? – assylias

+0

toString è (nella maggior parte delle classi) destinato esclusivamente ai messaggi diagnostici, non alla "produzione". –

+0

Voglio convertire tutte le liste in String [] senza iterare su di esso. – calbertts

risposta

20

È necessario scorrere l'elenco e riempire il numero String[].

String[] array = new String[lst.size()]; 
int index = 0; 
for (Object value : lst) { 
    array[index] = (String) value; 
    index++; 
} 

Se la lista sarebbe di String valori, Lista allora questo sarebbe semplice come chiamare lst.toArray(new String[0]);

+5

Cambia 'array [indice] = (String) valore', a' array [indice] = String.valueOf (valore) '. La risposta così com'è andrà in crash se la lista contiene qualcosa, ma Stringhe. Forse questo è ciò che OP vuole. –

+0

Questo funziona per me. Grazie. – calbertts

+0

Prego. –

14

Si potrebbe utilizzare toArray() per convertire in un array di oggetti seguito da this method per convertire la matrice di oggetti in un array di stringhe:

Object[] objectArray = lst.toArray(); 
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class); 
+0

Perché copiare una matrice aggiuntiva quando 'objectArray' può ancora essere usato come String []? – sundar

+0

Vedere la parte inferiore della domanda collegata: la trasmissione di 'objectArray' a' String [] 'provoca una' ClassCastException'. Questa risposta spiega meglio: http://stackoverflow.com/a/1018774/1063716 –

+0

Sì in caso di Elenco contenente oggetti diversi dalla stringa. Ma ciò accade anche nel tuo codice. – sundar

4

Se siamo molto sicuri che List<Object> conterrà collezione di String, quindi probabilmente prova questo.

List<Object> lst = new ArrayList<Object>(); 
lst.add("sample"); 
lst.add("simple"); 
String[] arr = lst.toArray(new String[] {}); 
System.out.println(Arrays.deepToString(arr)); 
2

sacco di concetti qui che sarà utile:

List<Object> list = new ArrayList<Object>(Arrays.asList(new String[]{"Java","is","cool"})); 
String[] a = new String[list.size()]; 
list.toArray(a); 

Suggerimento per stampare array di stringhe:

System.out.println(Arrays.toString(a)); 
+0

Grazie mille! .. – calbertts

2

Utilizzando Guava

List<Object> lst ...  
List<String> ls = Lists.transform(lst, Functions.toStringFunction()); 
4

Java 8 ha la possibilità di utilizzare flussi come:

List<Object> lst = new ArrayList<>(); 
String[] strings = lst.stream().toArray(String[]::new);