2010-03-31 35 views
65

Làm cách nào để chuyển đổi danh sách thành một mảng? Mã sau trả về lỗi.Danh sách chuyển đổi <String> thành chuỗi [] trong 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); 
} 

Lỗi:

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

Đối với hầu hết các câu hỏi có lỗi, bạn nên đăng thông báo lỗi mà bạn đang nhận. –

+1

Tôi thích stackoverflow hơn. Cảm ơn bạn đã xếp hạng 1 trong google. – Ninjaxor

Trả lời

93

Bạn muốn

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

Xem here cho tài liệu và lưu ý rằng bạn cũng có thể gọi phương pháp này trong một cách mà nó populates mảng trôi qua, thay vì chỉ sử dụng nó để tìm ra loại trả về. Cũng lưu ý rằng có thể khi bạn in mảng của mình, bạn muốn

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

vì điều đó sẽ in các phần tử thực tế.

+21

Sử dụng strlist.toArray (chuỗi mới [strlist.size()]); thường hiệu quả hơn. –

3

List.toArray() nhất thiết phải trả về một mảng đối tượng. Để nhận được một mảng Chuỗi, bạn cần sử dụng cú pháp truyền:

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

Xem javadoc cho java.util.List để biết thêm.

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

Tôi cũng ủng hộ phiên bản này của phương thức 'toArray' vì nó sử dụng lại tham số strarray, thay vì trả về một cá thể mới –

2

tôi đã thiết kế và thực hiện Dollar cho các loại hình công việc:

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

API $ của bạn trông tuyệt vời, có thể vài phương pháp như 'sắp xếp' có thể chấp nhận các bộ so sánh. hữu ích. – Greg

+0

Cảm ơn! Vui lòng gửi cho tôi bản vá hoặc yêu cầu tính năng mở bằng bitbucket. – dfa

+0

Để xem việc triển khai của bạn, tôi phải cài đặt chương trình 20M để 'nhân bản' nguồn 254,3 KB của bạn. – Sawyer

0

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

nếu bạn muốn Danh sách chuyển đổi thành chuỗi hãy sử dụng StringUtils.join (slist, '\ n');

Các vấn đề liên quan