जावा में ऐरे को लिस्ट में बदलना: 5 तरीके और छिपी समस्याएं

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा में ऐरे को लिस्ट में बदलना: 10 मिनट में शुरुआत से विशेषज्ञ तक

\n\n

क्या आपने कभी ऐसा कोड लिखा है जो ऐरे के साथ पूरी तरह से काम करता था, और फिर अचानक लिस्ट की आवश्यकता हुई? या इससे भी बुरा, ऐरे से बनाई गई लिस्ट में एलिमेंट जोड़ने की कोशिश करने पर एक रहस्यमयी अपवाद मिला? यदि हाँ — तो आप सही जगह पर आए हैं।

\n\n

जावा में array को list में बदलना उन कार्यों में से एक है जो सरल लगते हैं, लेकिन इसमें कई आश्चर्य छिपे होते हैं। Stack Overflow पर इस प्रश्न ने सैकड़ों हज़ारों व्यूज़ प्राप्त किए हैं, और यह व्यर्थ नहीं है: स्पष्ट सरलता के पीछे कलेक्शन के साथ काम करने की महत्वपूर्ण बारीकियाँ छिपी हैं।

\n\n

इस लेख में हम जावा में ऐरे को लिस्ट में बदलने के सभी वैध तरीकों पर चर्चा करेंगे, सामान्य गलतियों से बचना सीखेंगे और पता लगाएंगे कि किसी विशिष्ट स्थिति में कौन सी विधि चुननी चाहिए। चलिए शुरू करते हैं!

\n\n

क्यों सिर्फ Arrays.asList() एक जाल है?

\n\n

जावा में ऐरे को लिस्ट में बदलने का सबसे लोकप्रिय तरीका Arrays.asList() विधि है। यह भ्रामक रूप से सरल दिखता है:

\n\n
String[] fruits = {"apple", "banana", "cherry"};\nList<String> fruitList = Arrays.asList(fruits);
\n\n

बस इतना ही? लगभग। लेकिन तीन महत्वपूर्ण "लेकिन" हैं, जिनके बारे में सभी नहीं जानते:

\n\n

1. आकार निश्चित है

\n

Arrays.asList() के माध्यम से प्राप्त लिस्ट का आकार निश्चित होता है। एलिमेंट जोड़ने का प्रयास करें:

\n\n
fruitList.add("orange"); // UnsupportedOperationException!
\n\n

आपको UnsupportedOperationException मिलेगा। क्यों? क्योंकि यह वास्तविक ArrayList नहीं है, बल्कि एक अंतर्निहित कार्यान्वयन है जो केवल ऐरे को लपेटता है।

\n\n

2. ऐरे में बदलाव लिस्ट पर प्रभाव डालते हैं

\n

लिस्ट मूल ऐरे के लिए एक "खिड़की" है। ऐरे बदलें — लिस्ट भी बदल जाएगी:

\n\n
fruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot
\n\n

यह मुश्किल से पकड़ में आने वाली बग का कारण बन सकता है, खासकर यदि ऐरे को विधियों के बीच पास किया जाता है।

\n\n

3. प्रिमिटिव प्रकार काम नहीं करते

\n

int ऐरे को लिस्ट में बदलने का प्रयास करें:

\n\n
int[] numbers = {1, 2, 3};\nList<int[]> list = Arrays.asList(numbers); // List<Integer> नहीं, बल्कि List<int[]>!
\n\n

संख्या लिस्ट के बजाय, आपको एक ऐसी लिस्ट मिलेगी जिसमें एक ही एलिमेंट है — पूरा ऐरे। Java लिस्ट में प्रिमिटिव को स्वचालित रूप से पैक करना नहीं जानता।

\n\n

जावा में ऐरे को लिस्ट में बदलने के 5 तरीके

\n\n

आइए जावा में ऐरे को लिस्ट में बदलने के सभी मुख्य तरीकों को उदाहरण और स्पष्टीकरण के साथ देखें।

\n\n

तरीका 1: क्लासिक Arrays.asList()

\n

यह तब उपयुक्त है जब आपको केवल पढ़ने के लिए लिस्ट चाहिए या आप सुनिश्चित हैं कि आप इसका आकार नहीं बदलेंगे।

\n\n
String[] colors = {"red", "green", "blue"};\nList<String> colorList = Arrays.asList(colors);\n// काम करता है: पढ़ना, एलिमेंट बदलना\ncolorList.set(0, "yellow");\n// काम नहीं करता: जोड़ना, हटाना
\n\n

तरीका 2: नया ArrayList बनाना

\n

जावा में ऐरे को ArrayList में बदलने का सबसे सुरक्षित तरीका — एक नया इंस्टेंस बनाना:

\n\n
String[] animals = {"cat", "dog", "bird"};\nList<String> animalList = new ArrayList<>(Arrays.asList(animals));\n// अब जोड़ा और हटाया जा सकता है\nanimalList.add("fish"); // OK
\n\n

यह दृष्टिकोण एक पूर्ण परिवर्तनीय लिस्ट देता है, जो मूल ऐरे से स्वतंत्र है।

\n\n

तरीका 3: Collections.addAll()

\n

जावा में ऐरे को कलेक्शन में बदलने के लिए एक सुंदर विधि। विशेष रूप से तब उपयोगी जब लिस्ट पहले से मौजूद हो:

\n\n
String[] cities = {"Moscow", "Paris", "London"};\nList<String> cityList = new ArrayList<>();\nCollections.addAll(cityList, cities);\n// या एक पंक्ति में:\nList<String> cityList2 = new ArrayList<>(cities.length);\nCollections.addAll(cityList2, cities);

ब्लॉग

पुस्तक अनुशंसाएँ