2012-04-19 16 views
80

संभव डुप्लिकेट ArrayList करने के लिए:
Assigning an array to an ArrayList in Javaमैं कैसे परिवर्तित कर सकते हैं String [] <String>

मैं एक ArrayList<String> करने के लिए एक String[] कन्वर्ट करने के लिए की जरूरत है और मैं नहीं जानता कि कैसे

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

असल में मैंको बदलना चाहता हूंArrayList में।

+1

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

उत्तर

256

आप निम्न कर सकते हैं:

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

धन्यवाद, यह वह है जिसे मैंने –

+0

सरल समाधान का उपयोग किया था। धन्यवाद :) – ARiF

+1

मुझे विश्वास नहीं है कि आप इस सूची में बदलाव कर सकते हैं। stringList.remove (1) यकीन है कि मेरे लिए काम नहीं कर रहा है। –

4

आप पाश कर सकते हैं सरणी के सभी और ArrayList में जोड़ें:

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

या Arrays.asList(T... a) का उपयोग के रूप में टिप्पणी पोस्ट करने के लिए।

+1

'... नया ArrayList (filesOrig.length); 'रोकता है कि बैकिंग सरणी आकार में उगाई जानी चाहिए। संभावित रूप से तेज़ – zapl

21
इस तरह

:

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

या

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

धन्यवाद .. मैं 'Arrays.asList' का उपयोग नहीं कर सका क्योंकि मुझे बाद में सूची में तत्व जोड़ना था। 'addAll' पूरी तरह से काम किया :) –

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

सूची लौटे सरणी द्वारा समर्थित हो जाएगा, यह एक पुल की तरह काम करता है, तो यह हो जाएगा निश्चित-आकार।

+0

यह उत्तर गलत है और संकलित भी नहीं होगा। – suriv

+0

@ सुरीव: केवल एक ही समस्या 'ArrayList' के बजाय' सूची 'थी लेकिन उत्तर गलत नहीं है। किसी सरणी की प्रतिलिपि बनाना 'ArrayList' में हमेशा आवश्यक नहीं होता है, कभी-कभी आपको केवल एक सरणी को सूची के रूप में देखने की आवश्यकता होती है। ध्यान दें कि 'असली ArrayList <> (Arrays.asList (array)) में वास्तविक प्रतिलिपि बनाना, सूची के प्रत्येक तत्व के लिए स्मृति की आवश्यकता है। उदाहरण के लिए पॉइंटर्स को संदर्भों के लिए केवल 100000 'ऑब्जेक्ट' सरणी के लिए 800 केबी रैम की आवश्यकता होती है। – Jack

+0

भावी पाठकों के लाभ के लिए, इस सूची के तत्वों को जोड़ने या निकालने का प्रयास अपवाद फेंक देगा। – suriv

2

आप

की तरह कुछ कर सकते हैं MyClass [] आगमन = myList.toArray (नई MyClass [myList.size()]);

संबंधित मुद्दे