जावा में ऐरे को लिस्ट में बदलना: 10 मिनट में शुरुआत से विशेषज्ञ तक
\n\nक्या आपने कभी ऐसा कोड लिखा है जो ऐरे के साथ पूरी तरह से काम करता था, और फिर अचानक लिस्ट की आवश्यकता हुई? या इससे भी बुरा, ऐरे से बनाई गई लिस्ट में एलिमेंट जोड़ने की कोशिश करने पर एक रहस्यमयी अपवाद मिला? यदि हाँ — तो आप सही जगह पर आए हैं।
\n\nजावा में array को list में बदलना उन कार्यों में से एक है जो सरल लगते हैं, लेकिन इसमें कई आश्चर्य छिपे होते हैं। Stack Overflow पर इस प्रश्न ने सैकड़ों हज़ारों व्यूज़ प्राप्त किए हैं, और यह व्यर्थ नहीं है: स्पष्ट सरलता के पीछे कलेक्शन के साथ काम करने की महत्वपूर्ण बारीकियाँ छिपी हैं।
\n\nइस लेख में हम जावा में ऐरे को लिस्ट में बदलने के सभी वैध तरीकों पर चर्चा करेंगे, सामान्य गलतियों से बचना सीखेंगे और पता लगाएंगे कि किसी विशिष्ट स्थिति में कौन सी विधि चुननी चाहिए। चलिए शुरू करते हैं!
\n\nक्यों सिर्फ Arrays.asList() एक जाल है?
\n\nजावा में ऐरे को लिस्ट में बदलने का सबसे लोकप्रिय तरीका Arrays.asList() विधि है। यह भ्रामक रूप से सरल दिखता है:
String[] fruits = {"apple", "banana", "cherry"};\nList<String> fruitList = Arrays.asList(fruits);\n\nबस इतना ही? लगभग। लेकिन तीन महत्वपूर्ण "लेकिन" हैं, जिनके बारे में सभी नहीं जानते:
\n\n1. आकार निश्चित है
\nArrays.asList() के माध्यम से प्राप्त लिस्ट का आकार निश्चित होता है। एलिमेंट जोड़ने का प्रयास करें:
fruitList.add("orange"); // UnsupportedOperationException!\n\nआपको UnsupportedOperationException मिलेगा। क्यों? क्योंकि यह वास्तविक ArrayList नहीं है, बल्कि एक अंतर्निहित कार्यान्वयन है जो केवल ऐरे को लपेटता है।
2. ऐरे में बदलाव लिस्ट पर प्रभाव डालते हैं
\nलिस्ट मूल ऐरे के लिए एक "खिड़की" है। ऐरे बदलें — लिस्ट भी बदल जाएगी:
\n\nfruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot\n\nयह मुश्किल से पकड़ में आने वाली बग का कारण बन सकता है, खासकर यदि ऐरे को विधियों के बीच पास किया जाता है।
\n\n3. प्रिमिटिव प्रकार काम नहीं करते
\nint ऐरे को लिस्ट में बदलने का प्रयास करें:
\n\nint[] 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\nString[] colors = {"red", "green", "blue"};\nList<String> colorList = Arrays.asList(colors);\n// काम करता है: पढ़ना, एलिमेंट बदलना\ncolorList.set(0, "yellow");\n// काम नहीं करता: जोड़ना, हटाना\n\nतरीका 2: नया ArrayList बनाना
\nजावा में ऐरे को ArrayList में बदलने का सबसे सुरक्षित तरीका — एक नया इंस्टेंस बनाना:
\n\nString[] 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\nString[] 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);