2013-02-08 23 views
16

List<Object> için String[] dönüşümü gerekiyor. Convert List <Object> to String [] Java içinde

yaptığım:

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

Ama bu dize var:

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

sadece bir dize, ama çok String []

Teşekkür gerekir.

+1

Rasgele bir nesneyi bir dizeye nasıl dönüştürürsünüz? – assylias

+0

toString (çoğu sınıfta) yalnızca "üretim" değil, teşhis mesajları için tasarlanmıştır. –

+0

Dize [] 'deki tüm listeyi yinelemeden dönüştürmek istiyorum. – calbertts

cevap

20

liste içinde döngü var ve String[] doldurun.

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

liste String değerlerin olurdu, Liste sonra bu lst.toArray(new String[0]) çağırma olarak basit olacaktır;

+5

Değiştir 'dizisi [index] = (String) value',' dizisi [index] = String.valueOf (değer) 'için. Liste, herhangi bir şey içeriyorsa, ancak Dizeler olarak çökecektir. Belki OP'nin istediği budur. –

+0

Thats benim için çalışıyor. Teşekkürler. – calbertts

+0

Rica ederim. –

14

Sen Strings bir diziye Nesnelerin dizi dönüştürmek için this method ardından Nesneleri bir diziye dönüştürmek için ToArray() kullanabilirsiniz: Biz List<Object> toplanmasını içerecek çok eminseniz

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

"objectArray" öğesi String [] olarak hala kullanılabilirken neden ek dizi kopyası? – sundar

+0

bağlı söz konusu alt tarafı, - için 'objectArray' döküm' String [] 'a ClassCastException' neden olur. http://stackoverflow.com/a/1018774/1063716 –

+0

Evet içeren Listesi'nde durumunda dize dışındaki nesneleri: Bu cevap daha iyi açıklıyor. Ama bu senin kodunda bile olur. – sundar

4

String, muhtemelen bunu deneyin. yararlı olacaktır burada kavramların

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

Lot:

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

İpucu Strings dizisi yazdırmak için: Kullanma

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

Çok teşekkürler! .. – calbertts

2

Guava

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

Java 8, gibi farklı kaynakları kullanma olanağına sahip:

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