2012-04-19 37 views
80

thể trùng lặp:
Assigning an array to an ArrayList in JavaLàm thế nào tôi có thể chuyển đổi String [] để ArrayList <String>

tôi cần phải chuyển đổi một String[] một ArrayList<String> và tôi không biết làm thế nào

File dir = new File(Environment.getExternalStorageDirectory() + "/dir/"); 
String[] filesOrig = dir.list(); 

Về cơ bản tôi muốn chuyển đổi filesOrig vào một ArrayList.

+1

http://stackoverflow.com/questions/3746639/assigning-an-array-to-an-arraylist-in-java – evanwong

Trả lời

256

Bạn có thể làm như sau:

String [] strings = new String [] {"1", "2" }; 
List<String> stringList = new ArrayList<String>(Arrays.asList(strings)); //new ArrayList is only needed if you absolutely need an ArrayList 
+0

Cảm ơn, đây là cái tôi đã sử dụng –

+0

Giải pháp đơn giản. Cảm ơn :) – ARiF

+1

Tôi không tin rằng bạn có thể thực hiện thay đổi cho danh sách này. stringList.remove (1) chắc chắn không làm việc cho tôi. –

4

Bạn có thể lặp tất cả các mảng và thêm vào ArrayList:

ArrayList<String> files = new ArrayList<String>(filesOrig.length); 
for(String file: filesOrig) { 
    files.add(file); 
} 

Hoặc sử dụng Arrays.asList(T... a) làm như bình luận được đăng.

+1

'... new ArrayList (filesOrig.length); 'ngăn cản mảng sao lưu phải được tăng kích thước. Có khả năng nhanh hơn. – zapl

21

Như thế này:

String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
List<String> wordList = new ArrayList<String>(Arrays.asList(words)); 

hoặc

List myList = new ArrayList(); 
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
Collections.addAll(myList, words); 
+1

Cảm ơn .. Tôi không thể sử dụng 'Arrays.asList' vì tôi phải thêm phần tử vào danh sách sau. 'addAll' hoạt động hoàn hảo :) –

10
List<String> list = Arrays.asList(array); 

Danh sách trả lại sẽ được hỗ trợ bởi các mảng, nó hoạt động như một cầu nối, vì vậy nó sẽ được kích thước cố định.

+0

Câu trả lời này sai và thậm chí không biên dịch. – suriv

+0

@suriv: vấn đề duy nhất là 'Danh sách' thay vì' ArrayList' nhưng câu trả lời không sai. Việc tạo một bản sao của một mảng vào một 'ArrayList' không phải lúc nào cũng cần thiết, đôi khi bạn chỉ cần xem một mảng như một danh sách. Tâm trí tạo ra một bản sao thực, như trong 'new ArrayList <> (Arrays.asList (array))' đòi hỏi một bộ nhớ cho mỗi phần tử của danh sách. Ví dụ một mảng 100000 'Object' yêu cầu 800kb RAM chỉ cho các con trỏ tham chiếu. – Jack

+0

Vì lợi ích của người đọc trong tương lai, việc cố gắng thêm hoặc xóa các phần tử khỏi Danh sách này sẽ ném một ngoại lệ. – suriv

5
List myList = new ArrayList(); 
Collections.addAll(myList, filesOrig); 
2

Bạn có thể làm một cái gì đó giống như

MyClass [] arr = myList.toArray (MyClass mới [myList.size()]);

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