2013-02-08 28 views
16

Tôi cần chuyển đổi từ List<Object> thành String[].Chuyển đổi Danh sách <Object> thành Chuỗi [] trong Java

tôi thực hiện:

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

Nhưng tôi có chuỗi này:

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

chỉ là một chuỗi, nhưng tôi cần String []

Thanks a lot.

+1

Làm cách nào để chuyển đổi một đối tượng ngẫu nhiên thành một chuỗi? – assylias

+0

toString là (trong hầu hết các lớp) hoàn toàn dành cho các thông điệp chẩn đoán chứ không phải là "sản xuất". –

+0

Tôi muốn chuyển đổi tất cả các danh sách trong String [] mà không cần lặp qua nó. – calbertts

Trả lời

20

Bạn phải lặp qua danh sách và điền vào String[].

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

Nếu danh sách có giá trị String, Danh sách sau đó sẽ đơn giản như gọi lst.toArray(new String[0]);

+5

Thay đổi 'mảng [index] = (String) giá trị', thành' mảng [index] = String.valueOf (giá trị) '. Câu trả lời vì nó sẽ sụp đổ nếu danh sách có chứa bất cứ điều gì, nhưng Strings. Có lẽ đây là những gì OP muốn. –

+0

Thats phù hợp với tôi. Cảm ơn. – calbertts

+0

Bạn được chào đón. –

14

Bạn có thể sử dụng toArray() để chuyển đổi thành một mảng các đối tượng tiếp theo this method để chuyển đổi hàng loạt các đối tượng vào một mảng của Strings:

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

Tại sao bản sao mảng bổ sung khi 'objectArray' vẫn có thể được sử dụng như String []? – sundar

+0

Xem phần dưới cùng của câu hỏi được liên kết - truyền 'objectArray' thành' String [] 'gây ra một' ClassCastException'. Câu trả lời này giải thích tốt hơn: http://stackoverflow.com/a/1018774/1063716 –

+0

Có trong trường hợp Danh sách chứa các đối tượng không phải là chuỗi. Nhưng điều đó xảy ra ngay cả trong mã của bạn. – sundar

4

Nếu chúng tôi rất chắc chắn rằng List<Object> sẽ chứa bộ sưu tập của String, sau đó có thể thử điều này.

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

lô các khái niệm ở đây mà sẽ hữu ích:

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

Mẹo để in mảng của Strings:

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

Cảm ơn rất nhiều! .. – calbertts

2

Sử dụng Guava

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

Java 8 có tùy chọn sử dụng các luồng như:

List<Object> lst = new ArrayList<>(); 
String[] strings = lst.stream().toArray(String[]::new); 
Các vấn đề liên quan