2013-02-08 2 views
16

Ich muss von List<Object> zu String[] konvertieren.Konvertieren Sie die Liste <Object> in String [] in Java

ich gemacht:

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

Aber ich diese Zeichenfolge bekam:

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

ist nur eine Saite, aber ich brauche viel String []

Dank.

+1

Wie konvertieren Sie ein zufälliges Objekt in einen String? – assylias

+0

toString ist (in den meisten Klassen) nur für Diagnosemeldungen gedacht, nicht für "Produktion". –

+0

Ich möchte alle Liste in String [] konvertieren, ohne darüber zu iterieren. – calbertts

Antwort

20

Sie müssen die Liste durchlaufen und füllen Sie Ihre String[].

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

Wenn die Liste der String Werte wäre, List dann wäre dies lst.toArray(new String[0]) wie der Aufruf so einfach sein;

+5

Ändern Sie 'array [index] = (String) value', zu' array [index] = String.valueOf (value) '. Die Antwort stürzt ab, wenn die Liste etwas enthält, aber Strings. Vielleicht ist das was OP will. –

+0

Das funktioniert für mich. Vielen Dank. – calbertts

+0

Gern geschehen. –

14

Sie könnten toArray() verwenden, um in einer Reihe von Gegenständen durch this method gefolgt zu konvertieren zu konvertieren das Array von Objekten in ein Array von Strings:

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

Warum zusätzliche Array-Kopie, wenn 'objectArray' weiterhin als String [] verwendet werden kann? – sundar

+0

Siehe den unteren Teil der verknüpften Frage - das Umwandeln von 'objectArray' in' String [] 'verursacht eine' ClassCastException'. Diese Antwort erklärt besser: http://StackOverflow.com/a/1018774/1063716 –

+0

Ja im Falle von List, die andere Objekte als String enthält. Aber das passiert sogar in deinem Code. – sundar

4

Wenn wir sehr sicher sind, dass List<Object> Sammlung enthalten String, dann versuche es wahrscheinlich.

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

Viele Konzepte hier die nützlich sein wird:

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

Tip Array von Strings drucken:

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

Vielen Dank! .. – calbertts

2

Mit Guava

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

Java 8 hat die Option Streams wie zu verwenden:

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