2015-09-02 5 views
5

मैं बनाने रहा एक ArrayList और इसका आकार 40Initilize शून्य

ArrayList<Integer> myList= new ArrayList<>(40); 

है मैं प्रारंभ कर सकते हैं कैसे शून्य 0 साथ myList साथ एक ArrayList? मैं इस

for(int i=0; i<40; i++){ 
    myList.set(i, 0); 
} 

कोशिश की, लेकिन मैं

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 

उत्तर

13

आप शून्य से अपनी सूची भरने के लिए Collections.fill(List<? super T> list,T obj) विधि का उपयोग कर सकते हैं। आपके मामले में आप new ArrayList<>(40) सेट कर रहे हैं 40 सूची की लंबाई नहीं है लेकिन आरंभिक क्षमता है। आप अपनी सूची को सभी शून्यों के साथ बनाने के लिए सरणी का उपयोग कर सकते हैं। कोड के टुकड़े के बाद चेकआउट।

Integer [] arr = new Integer[40]; 
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(arr)); 
Collections.fill(myList, 0);//fills all 40 entries with 0 
System.out.println(myList); 

आउटपुट

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
3

उपयोग .add(0) बजाय मिलता है। ArrayList(int capacity) कन्स्ट्रक्टर प्रारंभिक क्षमता सेट करता है, लेकिन प्रारंभिक आइटम नहीं। तो आपकी सूची अभी भी खाली है।

+1

ध्यान दें कि 'Arrays.asList (नया int [40])' वापसी 'सूची ' इसलिए आपका उपरोक्त कथन संकलन समय त्रुटि देगा। –

0

वहाँ आप बल्कि की स्थापना से जोड़ा हो सकता था। myList.add काम करेगा। आप केवल तभी सेट कर सकते हैं जब उस विशेष इंडेक्स पर पहले से ही कोई प्रविष्टि हो। set विधि केवल उस अनुक्रमणिका में मौजूद सामग्री को प्रतिस्थापित करती है। या

ArrayList<Integer> myList = new ArrayList<Integer>(Collections.nCopies(40, 0)); 

:
Check api documentation for set method here

9

Collections.nCopies() प्रयास करें

List<Integer> myList = Collections.nCopies(40, 0); 

देखें doc

+0

यह मेरे अनुसार अधिक उपयुक्त है। +1 अच्छा है। –

+1

ध्यान दें कि दूसरा उदाहरण एक अपरिवर्तनीय सूची देता है - शायद यही कारण है कि इसे पहले उदाहरण में दिखाए गए अनुसार ऐरेलिस्ट में लपेटा जाना चाहिए। – glaed

+1

यह स्वीकार्य उत्तर होना चाहिए! –

0

जावा 8 कार्यान्वयन:

ArrayList<Integer> list = IntStream.of(new int[40]) 
        .boxed() 
        .collect(Collectors.toList()); 
+2

'संग्रह। एनकोपीज 'बहुत बेहतर है – ZhekaKozlov

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