क्या आप array का आकार घोषित करने से थक गए हैं इससे पहले कि आप इसका उपयोग कर सकें? आप अकेले नहीं हैं, क्योंकि array को उपयोग करने से पहले यह परिभाषित करना हमेशा सुविधाजनक नहीं होता कि array को कितने मान स्टोर करने चाहिए।
यहीं पर हमारा सहायक मित्र, Java ArrayList, आता है।
इस गाइड में, हम बात करने जा रहे हैं कि ArrayLists क्या हैं, वे कैसे काम करते हैं, और वे पारंपरिक arrays की तुलना कैसे करते हैं। हम उन सबसे महत्वपूर्ण मेथड्स के माध्यम से भी चलेंगे जिन्हें ArrayList क्लास के साथ प्रभावी ढंग से काम करने के लिए आपको जानना आवश्यक है। आइए शुरू करें!
ArrayList क्या है?
एक ArrayList एक विशेष प्रकार की सूची है जो आपको रिसाइज़ेबल arrays बनाने की अनुमति देती है। ArrayList क्लास List इंटरफ़ेस को इम्प्लीमेंट करती है, जिसका उपयोग क्रमबद्ध डेटा स्टोर करने के लिए किया जाता है।
जब आप Java में array के साथ काम कर रहे होते हैं, तो आपको उस array का आकार घोषित करना होता है इससे पहले कि आप उस array के भीतर मान स्टोर कर सकें। यह अक्सर होता है कि आप array घोषित करने से पहले नहीं जानते कि आप array में कितने मान स्टोर करना चाहेंगे, जो एक समस्या प्रस्तुत करता है।
ArrayList क्लास आपको एक array को परिभाषित करने की अनुमति देती है जिसे यह बताने की आवश्यकता नहीं होती कि यह कितने मान स्टोर कर सकता है। ArrayLists, जिन्हें कभी-कभी dynamic arrays कहा जाता है, जब आप तत्व जोड़ते या हटाते हैं तो अपनी क्षमता बदल सकते हैं।
ArrayList कैसे बनाएं
आइए स्पष्ट स्थान पर शुरू करें: ArrayList घोषित करना। एक सेट अप करना array घोषित करने के तरीके से काफी अलग है, क्योंकि यह Java List इंटरफ़ेस का उपयोग करता है।
एक Java फाइल खोलें और अपने मेन क्लास में निम्न कोड पेस्ट करें:
import java.util.ArrayList; ArrayListsongs = new ArrayList<>();
हमने अभी songs नामक एक array list बनाया है। String उस डेटा के प्रकार को संदर्भित करता है जिसे हमारे array में स्टोर किया जाएगा और ArrayList उस ऑब्जेक्ट के प्रकार को संदर्भित करता है जिसे हम बनाना चाहते हैं।
हमें ArrayList को अपने कोड में इम्पोर्ट करना होगा क्योंकि यह Java util लाइब्रेरी से आता है।
यह ध्यान देने योग्य है कि आप प्रिमिटिव डेटा प्रकारों का उपयोग करके array lists नहीं बना सकते। यदि आप इंटीजर्स का array घोषित करना चाहते हैं, उदाहरण के लिए, आप प्रिमिटिव int प्रकार का उपयोग नहीं कर सकते; आपको Integer क्लास का उपयोग करना होगा।
ध्यान दें कि हमें यह निर्दिष्ट नहीं करना पड़ा कि हमारे ArrayList को कितने मान स्टोर करने की आवश्यकता है। ऐसा इसलिए है क्योंकि ArrayLists डायनामिक हैं।
ArrayList में तत्व कैसे जोड़ें
add() मेथड आपको अपनी सूची में एक सिंगल तत्व जोड़ने देता है। मान लीजिए कि हम अपने songs array list में दो गाने जोड़ना चाहते हैं: Love Me Do और Help! (जो दोनों The Beatles के हैं)।
एक नई Java फाइल खोलें और निम्न कोड लिखें:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); } }
हमारा कोड लौटाता है: Songs: [Love Me Do, Help!]
Arrays की तरह, ArrayList में आइटम्स को अपने इंडेक्स नंबर दिए जाते हैं। ऐसा इसलिए है क्योंकि ArrayList में आइटम्स क्रमबद्ध होते हैं और नंबर हमारे प्रोग्राम को बताते हैं कि हमारी सूची में प्रत्येक आइटम किस क्रम में दिखाई देना चाहिए। यदि आवश्यक हो, तो आप वह इंडेक्स पोजीशन निर्दिष्ट कर सकते हैं जिस पर आप आइटम जोड़ना चाहते हैं:
songs.add(0, "Love Me Do");
यह एंट्री "Love Me Do" को हमारे songs सूची में इंडेक्स पोजीशन 0 पर जोड़ देगा।
ArrayList इनिशियलाइज़ करना
जब आप एक array घोषित करते हैं, तो आप इसे सीधे उन मानों को निर्दिष्ट करके इनिशियलाइज़ कर सकते हैं जिन्हें आप उस array को असाइन करना चाहते हैं। ArrayLists इस तरह काम नहीं करते। आपको Arrays क्लास से asList() नामक एक विशेष मेथड का उपयोग करना होगा ताकि ArrayList को इनिशियलाइज़ किया जा सके। asList() एक array को सूची के रूप में लौटाता है जिसे ArrayList क्लास द्वारा पढ़ा जा सकता है।
आप ArrayList को मानों के साथ इनिशियलाइज़ करना चाह सकते हैं यदि आपके पास पहले से ही कुछ मान हैं जिन्हें आप अपनी सूची में जोड़ना चाहते हैं।
आप प्रत्येक आइटम को व्यक्तिगत रूप से जोड़ने के लिए for लूप का उपयोग कर सकते हैं। हालांकि, वह दृष्टिकोण सेट अप करने में अधिक जटिल और asList() का उपयोग करके सूची को मानों के साथ इनिशियलाइज़ करने की तुलना में कम कुशल है।
आइए उन लाइब्रेरीज को इम्पोर्ट करके शुरू करें जिनका उपयोग हम अपने कोड में करने जा रहे हैं:
import java.util.ArrayList; import java.util.Arrays;
फिर हम एक क्लास लिखेंगे जिसने हमारे songs ArrayList को दो मानों के साथ इनिशियलाइज़ किया:
class Main { public static void main(String[] args) { ArrayList songs = new ArrayList(Arrays.asList("Love Me Do", "Help!")); System.out.println("Songs: " + songs); } }
इस कोड में, हमने एक ArrayList घोषित किया है जो स्ट्रिंग मान स्टोर कर सकता है। हमने asList() का उपयोग अपने कोड को निर्देश देने के लिए किया है कि हमारे array list को दो डिफ़ॉल्ट मानों के साथ इनिशियलाइज़ करे, जो वही बीटल्स गाने हैं जिन्हें हमने अपने पिछले उदाहरण में जोड़ा था।
ArrayList से आइटम प्राप्त करना
ArrayList क्लास एक आसान मेथड get() के साथ आती है जो आपको array list के तत्वों तक पहुंचने की अनुमति देती है। इस मेथड का उपयोग करने के लिए, आपको उस तत्व की इंडेक्स पोजीशन निर्दिष्ट करनी होगी जिसे आप एक्सेस करना चाहते हैं।
इस उदाहरण पर विचार करें:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Second song: " + songs.get(1)); } }
इस कोड में, हमने एक array list बनाया और दो मान जोड़े। हमने इंडेक्स पोजीशन 1 पर अपनी सूची में गाने को प्राप्त करने के लिए songs.get(1) का उपयोग किया। हमारा कोड लौटाता है:
Second song: Help!
ArrayList अपडेट करना
Array list को अपडेट करना सूची में तत्व जोड़ने जितना आसान है। एक बिल्ट-इन मेथड है जिसे set() कहा जाता है जिसका उपयोग आप सूची में स्टोर किए गए मान को बदलने के लिए कर सकते हैं। निम्न कोड पर विचार करें:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); songs.set(1, "Come Together"); System.out.println("Songs: " + songs); } }
हमारा कोड लौटाता है:
Songs: [Love Me Do, Help!]
Songs: [Love Me Do, Come Together]
हमारे कोड में, हमने अपनी सूची में दो मान - "Love Me Do" और "Help!" - जोड़े। फिर हमने इंडेक्स पोजीशन 1 वाले आइटम को "Come Together" में बदल दिया। यह हमारी सूची में "Help!" को "Come Together" से बदल देता है। जब हम प्रोग्राम के अंत में अपनी सूची प्रिंट करते हैं, तो हम देख सकते हैं कि इसे संशोधित किया गया है।
ArrayList से तत्व हटाना
तत्वों को ArrayList में हमेशा के लिए रहने की आवश्यकता नहीं है। आप किसी भी समय remove() मेथड का उपयोग करके तत्व को हटा सकते हैं। याद रखने के लिए कितना आसान मेथड नाम!
इस उदाहरण पर विचार करें:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); String removed = songs.remove(0); System.out.println("Songs: " + songs); System.out.println(removed); } }
इस उदाहरण में, हम अपनी array list में दो आइटम जोड़ते हैं। फिर हम इंडेक्स पोजीशन 0 वाले आइटम को हटाते हैं। हमारा कोड लौटाता है:
Songs: [Love Me Do, Help!]
Songs: [Help!]
Love Me Do
हमने अभी Love Me Do को अपनी array list से हटा दिया है। remove() मेथड हटाए गए आइटम का नाम लौटाता है, जिसे हमने removed वेरिएबल को असाइन किया। हमने अपने प्रोग्राम के अंत में इस वेरिएबल के मान को कंसोल पर प्रिंट किया।
ArrayList के माध्यम से इटरेट करना
क्या होगा यदि आप ArrayList के माध्यम से लूप करना चाहते हैं? आप अपनी पसंद के आधार पर या तो for लूप या for-each लूप का उपयोग करके ऐसा कर सकते हैं।
मान लीजिए कि हम अपनी सूची में सभी बीटल्स गानों को कंसोल पर प्रिंट करना चाहते हैं, प्रत्येक मान अपनी लाइन पर दिखाई दे रहा है। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); for (int i = 0; i < songs.size(); i++) { System.out.println(songs.get(i)); } } }
इस प्रोग्राम में, हमने अपनी array list में हर आइटम के माध्यम से इटरेट करने के लिए for लूप का उपयोग किया है। array list में प्रत्येक आइटम के लिए, हम इसे कंसोल पर इसकी अपनी लाइन पर प्रिंट करते हैं। यह लूप तब तक जारी रहता है जब तक हमारी सूची में हर आइटम कंसोल पर प्रिंट नहीं हो जाता।
ध्यान दें कि हमने इस प्रोग्राम में songs.size() नामक मेथड का उपयोग किया है। size() मेथड हमें बताता है कि हमारी array list में कितने मान स्टोर हैं।
हमारा कोड लौटाता है:
Love Me Do
Help!
इसी तरह, आप array list के माध्यम से इटरेट करने के लिए for-each लूप का उपयोग कर सकते हैं। ऐसा इसलिए है क्योंकि for-each लूप्स किसी भी इटरेटेबल ऑब्जेक्ट के माध्यम से इटरेट करने का समर्थन करते हैं। निम्न उदाहरण पर विचार करें:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); for (String song : songs) { System.out.println(song); } } }
यह प्रोग्राम संरचना और उद्देश्य दोनों में बहुत समान है; यह हमारे songs array list में सभी मानों को कंसोल पर प्रिंट करता है। अंतर यह है कि हमने प्रत्येक मान के माध्यम से इटरेट करने के लिए for-each लूप का उपयोग किया है।
आप for लूप के बजाय for-each लूप का उपयोग करना चुन सकते हैं क्योंकि for-each लूप पढ़ने में आसान होता है, लेकिन दोनों मेथड्स प्रभावी ढंग से काम करते हैं।
निष्कर्ष
Java ArrayList क्लास आपको arrays को परिभाषित करने की अनुमति देती है जो कई मान स्टोर कर सकते हैं बिना यह बताए कि कितने मान स्टोर करने हैं।
हमने Java में ArrayLists का उपयोग करने की सतह को केवल खरोंचा है। अधिक जानने के लिए, आप निम्न ट्यूटोरियल देखना चाह सकते हैं:
- ArrayList to Array conversion
- How to initialize an ArrayList
- How to sort an ArrayList
अब आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि आप क्या करेंगे यदि आप नहीं जानते कि array को कितने मान स्टोर करने की आवश्यकता होगी। आप इस समस्या को हल करने के लिए ArrayList का उपयोग करने में सक्षम होंगे!