1. ArrayListवर्ग

आज हम कक्षा का पता लगाएंगे ArrayList। यह कई वर्गों में से पहला है जिसे संग्रह के रूप में जाना जाता है । Java में, संग्रह इतने व्यापक और उपयोगी विषय हैं कि संपूर्ण CodeGym खोज उनके लिए समर्पित है।

पूरी तरह से समझने के लिए कि संग्रह कैसे संरचित होते हैं और उनकी सभी बारीकियाँ, आपको पहले OOP, इंटरफेस, इनहेरिटेंस, मल्टीथ्रेडिंग की मूल बातें और बहुत कुछ सीखना होगा।

तो आज हम सबसे सरल प्रकार के संग्रह से परिचित होंगे। लेकिन काफी गहरे स्तर पर ताकि आप समझ सकें कि इसका उपयोग कैसे करना है और यह कैसे काम करता है। तो अब मिलते हैं ArrayListकलेक्शन से .

पश्चकथा

मैं थोड़ी पृष्ठभूमि के साथ शुरुआत करूँगा। प्रोग्रामर वास्तव में सरणियों के एक पहलू को पसंद नहीं करते थे: यह तथ्य कि उनका आकार बदला नहीं जा सकता। क्या होगा यदि आपको सरणी में तीन और तत्वों को स्टोर करने की आवश्यकता है, लेकिन केवल एक खाली सेल है?

एक सरणी की स्थान सीमाओं का एकमात्र समाधान उन सभी तत्वों को समायोजित करने के लिए एक बहुत बड़ी सरणी बनाना था जिन्हें आपको स्टोर करने की आवश्यकता हो सकती है। लेकिन यह आमतौर पर याददाश्त की बर्बादी थी। यदि किसी सरणी में आमतौर पर दो या तीन तत्व होते हैं, लेकिन एक छोटी सी संभावना भी थी कि उसे उनमें से 100 को संग्रहीत करने की आवश्यकता होगी, तो 100 को संग्रहीत करने की क्षमता वाला एक सरणी बनाना आवश्यक था।

तो प्रोग्रामर क्या लेकर आए? उन्होंने कक्षा लिखी ArrayList, जो कक्षा के समान ही काम करती थी Array, लेकिन आकार बदलने योग्य थी।

ऐरेलिस्ट वर्ग

वर्ग का नाम ArrayListदो शब्दों से बना है: सरणी + सूची। Arrayएक सरणी है और Listएक सूची है।

प्रत्येक ArrayListवस्तु में तत्वों की एक सामान्य सरणी होती है। जब आप तत्वों को a से पढ़ते हैं ArrayList, तो वस्तु उन्हें अपने आंतरिक सरणी से पुनर्प्राप्त करती है। जब आप तत्व लिखते हैं, तो यह उन्हें आंतरिक सरणी में लिखता है।

ArrayList वर्ग में सरणियों के सभी नुकसान नहीं होते हैं। यह जानता है कि कैसे:

  • एक विशिष्ट प्रकार के तत्वों को स्टोर करें
  • सूची का गतिशील रूप से आकार बदलें
  • सूची के अंत में तत्व जोड़ें
  • सूची के आरंभ या मध्य में तत्व डालें
  • सूची में कहीं से भी तत्व निकालें

अधिक विवरण के लिए, नीचे देखें:


2. ArrayListवस्तु बनाना

ऑब्जेक्ट बनाने के लिए ArrayList, आपको इस तरह कोड लिखना होगा:

ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();

ArrayListसंग्रह प्रकार / वर्ग कहाँ है, संग्रह TypeParameterमें संग्रहीत तत्वों का प्रकार है ArrayList, और एक चर nameका नाम है ।ArrayList<TypeParameter>

चर nameका एक सामान्य प्रकार है। इसमें दो प्रकार होते हैं: संग्रह का प्रकार पहले इंगित किया जाता है, और फिर संग्रह में संग्रहीत तत्वों के प्रकार को इंगित करने के लिए कोण कोष्ठक का उपयोग किया जाता है।

उदाहरण:

कोड विवरण
ArrayList<Integer> list = new ArrayList<Integer>();
पूर्णांकों की सूची
ArrayList<String> list = new ArrayList<String>();
तार की सूची
ArrayList<Double> list = new ArrayList<Double>();
वास्तविक संख्याओं की सूची

सरणियों के विपरीत, संग्रह आदिम प्रकारों को संग्रहीत नहीं कर सकते, केवल संदर्भ प्रकार । तो अगर आपको एस के संग्रह की आवश्यकता है int, तो Integerइसके बजाय रैपर वर्ग का उपयोग करें।


3. एक के साथ संचालनArrayList

प्रारंभ में, नव निर्मित सूची की लंबाई शून्य है, क्योंकि इसमें 0 तत्व हैं। यदि आप सूची में एक तत्व जोड़ते हैं, तो इसकी लंबाई 1 से बढ़ जाती है। यदि आप जोड़े गए तत्व को हटाते हैं, तो लंबाई शून्य हो जाती है।

निम्न तालिका आपको ArrayListकक्षा के तरीकों के बारे में और अधिक सिखा सकती है:

तरीकों विवरण
void add(Type value)
पारित तत्व को सूची में जोड़ता है
void add(int index, Type value)
सूची में किसी विशिष्ट स्थान पर एक तत्व जोड़ता है।
Type get(int index)
वह तत्व लौटाता है जिसका सूचकांक हैindex
void set(int index, Type value)
valueउस तत्व को असाइन करता है जिसकी अनुक्रमणिका हैindex
Type remove(int index)
उस तत्व को हटा देता है जिसकी अनुक्रमणिका है index। हटाए गए तत्व को लौटाता है।
Type remove(Type value)
आप जिस तत्व को विधि में पास करते हैं उसे हटा देता है। यदि एक से अधिक ऐसे तत्व हैं, तो पहले वाले को हटा दिया जाएगा।
void clear()
सूची को साफ़ करता है, यानी सूची से सभी तत्वों को हटा देता है।
boolean contains(Type value)
जांचता है कि सूची में शामिल है या नहीं value
boolean isEmpty()
जाँचता है कि सूची खाली है या नहीं। दूसरे शब्दों में, क्या सूची की लंबाई शून्य है।
int size()
सूची का आकार, यानी सूची में तत्वों की संख्या लौटाता है।
Type[] toArray(Type[] array)
सूची के तत्वों से युक्त एक सरणी देता है।
आपको सरणी को विधि में पास करने की आवश्यकता है।

ये विधियाँ आपको लगभग वह सब कुछ करने देती हैं जो आप सूची के साथ करना चाहते हैं: तत्वों की अदला-बदली करें, तत्वों को जोड़ें और तत्वों को हटा दें। आप सूची को एक आदेश से साफ़ कर सकते हैं, या सूची को एक सरणी में भी परिवर्तित कर सकते हैं।



4. ArrayListऔर की तुलनाArray

मुझे नहीं लगता कि हम तुलना ArrayListऔर एक सरणी से बच सकते हैं।

सरणियों के साथ आप केवल 4 कार्य कर सकते हैं:

  • एक सरणी बनाएँ
  • इंडेक्स द्वारा एक तत्व प्राप्त करें
  • इंडेक्स द्वारा एक तत्व सेट करें
  • सरणी की लंबाई प्राप्त करें

यहाँ ये ऑपरेशन हैं क्योंकि वे एक सरणी और एक पर लागू होते हैं ArrayList:

सरणी सारणी सूची
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Bye";
list.set(0, "Bye");
int count = array.length;
int count = list.size();

आइए तुलना करें कि a कैसे ArrayListकाम करता है बनाम कैसे एक सरणी काम करती है। उदाहरण के लिए, आइए इस कार्य को लागू करें: "कीबोर्ड से 10 तार पढ़ें और उन्हें स्क्रीन पर रिवर्स ऑर्डर में प्रदर्शित करें"

ऐरे का उपयोग करना ArrayList का उपयोग करना
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// Display the contents of the array on the screen
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// Display the contents of the collection on the screen
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

सादृश्य स्पष्ट है। सरणियों के लिए सब कुछ किसी तरह छोटा और स्पष्ट है। लेकिन ArrayListमुश्किल भी नहीं है: एक तत्व प्राप्त करने के लिए, हम get()विधि का उपयोग करते हैं; एक तत्व, set()विधि को बदलने के लिए; सूची की लंबाई, size()विधि प्राप्त करने के लिए।

तो प्रोग्रामर ArrayListक्लास का उपयोग क्यों करते हैं?

संपूर्ण बिंदु, निश्चित रूप से, अन्य सभी विधियाँ हैं जो साधारण सरणियों में नहीं हैं:

  • सूची में एक तत्व जोड़ें
  • सूची के मध्य में एक तत्व जोड़ें
  • सूची में एक तत्व खोजें
  • किसी सूची से किसी तत्व को हटाना