"मी इथे आहे."

"हाय, एली!"

"आज आपण एका मनोरंजक विषयावर बोलू. मी तुम्हाला ArrayList क्लासबद्दल सांगणार आहे ."

"नवीन वर्ग? मस्त! काय करू शकतो?"

"मी मागच्या कथेपासून सुरुवात करू. प्रोग्रामरना अ‍ॅरेबद्दल एकच गोष्ट आवडत नाही ती म्हणजे तुम्ही त्यांचा आकार बदलू शकत नाही. तुम्हाला फक्त एक विनामूल्य स्लॉट असलेल्या अॅरेमध्ये आणखी तीन घटक जोडायचे असल्यास तुम्ही काय कराल? "

"या समस्येचा एकमेव उपाय म्हणजे खूप मोठे अॅरे तयार करणे, तुमच्याकडे सर्व घटकांसाठी पुरेशी जागा असल्याची हमी. तथापि, याचा अर्थ अनेकदा वाया गेलेली मेमरी आहे. जर अॅरेमध्ये सहसा तीन घटक असतात, परंतु अगदी लहान संधी देखील असते. त्याला 100 घटक सामावून घेण्याची आवश्यकता असू शकते, तुम्हाला 100-घटकांची अॅरे तयार करावी लागेल."

"मग, प्रोग्रामर काय घेऊन आले?"

"त्यांनी ArrayList क्लास लिहिला , जो Array प्रमाणेच करतो, परंतु तो त्याचा आकार बदलू शकतो."

"इंटरेस्टिंग मूव्ह. त्यांनी ते कसे केले?"

"प्रत्येक ArrayList ऑब्जेक्ट घटकांचा नियमित अॅरे संग्रहित करतो. जेव्हा तुम्ही ArrayList मधील घटक वाचता , तेव्हा ते त्यांना त्याच्या आतील अॅरेमधून वाचते. जेव्हा तुम्ही त्यांना ArrayList वर लिहिता , तेव्हा ते त्यांना त्याच्या अंतर्गत अॅरेमध्ये लिहिते. येथे, या स्तंभांची तुलना करा:"

रचना अॅरेलिस्ट
घटकांसाठी कंटेनर तयार करा
String[] list = new String[10];
ArrayList<String> list = new ArrayList<String>();
घटकांची संख्या मिळवा
int n = list.length;
int n = list.size();
अॅरे/कलेक्शनमधून एक घटक मिळवा
String s = list[3];
String s = list.get(3);
अॅरेमध्ये एक घटक लिहा
list[3] = s;
list.set(3, s);

"मग, Arraylist का चांगली आहे? मी सांगू शकतो, कोड आता लांब आहे."

"प्रथम, अ‍ॅरेलिस्ट अनेक अतिरिक्त ऑपरेशन्सना समर्थन देते जे प्रोग्रामरना नेहमीच करावे लागतात. एक सामान्य अॅरे या ऑपरेशन्सना समर्थन देत नाही. उदाहरणार्थ, छिद्र न ठेवता अॅरेच्या मध्यभागी घटक घालणे किंवा हटवणे. "

"दुसरे, अॅरेचा आकार बदलण्याची क्षमता. जेव्हा तुम्हाला आणखी एक घटक जोडण्याची आवश्यकता असते परंतु अंतर्गत अॅरेमध्ये कोणतेही विनामूल्य स्लॉट नसतात, तेव्हा अॅरेलिस्टमध्ये काय होते ते येथे आहे :

अ) आणखी एक अॅरे तयार केला आहे जो सध्याच्या आतील अॅरेपेक्षा 50% मोठा आहे, अधिक एक घटक.

b) जुन्या अॅरेमधील सर्व घटक नवीनमध्ये कॉपी केले जातात.

c) नवीन अॅरे ArrayList ऑब्जेक्टच्या आतील अॅरे म्हणून सेव्ह केला जातो. जुन्या अॅरेला कचरा घोषित करण्यात आला आहे (आम्ही फक्त त्याचा संदर्भ संग्रहित करणे थांबवतो)."

रचना अॅरेलिस्ट
अॅरेच्या शेवटी एक घटक जोडा
ही क्रिया समर्थित नाही
list.add(s);
अॅरेच्या मध्यभागी एक घटक जोडा
ही क्रिया समर्थित नाही
list.add(15, s);
अॅरेच्या सुरुवातीला एक घटक जोडा
ही क्रिया समर्थित नाही
list.add(0, s);
अॅरेमधून एक घटक हटवा
सह घटक हटवू शकतो list[3] = null. पण हे अॅरेमध्ये 'छिद्र' सोडेल.
list.remove(3);

"आम्ही या ArrayList सह कसे कार्य करू?"

"वास्तविक, जसे आपण सामान्य अॅरेसोबत करतो. बघा. अॅरेलिस्टसोबत काम करण्याची तुलना अॅरेसोबत काम करण्याशी करूया. समजा आपल्याला '१० स्ट्रिंग्समध्ये वाचण्याची आणि स्क्रीनवर उलट क्रमाने दाखवायची आहे '."

"हे पहा:

अॅरे सह
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
String[] list = new String[10];
for (int i = 0; i < list.length; i++)
{
  String s = reader.readLine();
  list[i] = s;
}

// Display the contents of the array
for (int i = 0; i < list.length; i++)
{
  int j = list.length - i - 1;
  System.out.println( list[j] );
}
}
ArrayList सह
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++)
{
  String s = reader.readLine();
  list.add(s);
}

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

मी प्रत्येक स्तंभातील समान क्रिया हायलाइट करण्यासाठी समान रंग वापरला आहे."

"एकीकडे, सर्व काही वेगळे आहे. दुसरीकडे, ते अजूनही समान आहे."

"बरोबर. आम्ही ArrayList सह काम करताना चौरस कंस वापरत नाही . त्याऐवजी, आम्ही get , set आणि add methods वापरतो."

"हो, मला इतकंच जमलंय. तरीही खूप सारखीच दिसतेय."