1. ArrayListरचना कशी आहे

ArrayListघटक संचयित करण्यासाठी सर्वात सामान्यपणे वापरला जाणारा Java वर्ग आहे. तर कसे ArrayListकार्य करते आणि प्रत्येकाला ते इतके का आवडते?

ची रचना ArrayListसोपी आणि कल्पक आहे. प्रत्येक ArrayListऑब्जेक्टमध्ये दोन फील्ड असतात:

  • घटकांची अ‍ॅरे
  • व्हेरिएबल size, जे सूचीमधील घटकांची संख्या संग्रहित करते

अंतर्गत, ArrayListऑब्जेक्टमध्ये सर्वात सामान्य अॅरे असते! पण एवढेच नाही. एक आकार व्हेरिएबल देखील आहे , जे सूचीची लांबी संग्रहित करते. हे कसे कार्य करते:

सुरुवातीला, सूचीमधील अॅरेची लांबी 10 आहे. आणि sizeव्हेरिएबल 0 आहे.

तुम्ही सूचीमध्ये एक घटक जोडल्यास, तो अॅरेच्या 0व्या सेलमध्ये संग्रहित केला जाईल आणि size1 पर्यंत वाढेल.

तुम्ही आणखी एक घटक जोडल्यास, तो 1ल्या सेलमध्ये संग्रहित केला जाईल आणि sizeपुन्हा 1 ने वाढेल आणि दोन समान होईल.

अॅरेमध्ये अधिक जागा नसताना तुम्ही दुसरा घटक जोडल्यास, पद्धतीमध्ये खालील गोष्टी घडतात add():

  1. एक नवीन अॅरे तयार केला आहे जो मागील एकाच्या लांबीच्या दीड पट आहे
  2. जुन्या अॅरेचे सर्व घटक नवीन अॅरेमध्ये कॉपी केले जातात.
  3. ऑब्जेक्टमध्ये ArrayList, नवीन अॅरेचा संदर्भ जुन्याचा संदर्भ बदलतो .
  4. पास केलेला घटक नवीन अॅरेच्या 10व्या सेलमध्ये सेव्ह केला जातो.
  5. आकार व्हेरिएबल 1 ने वाढते आणि आता 11 च्या बरोबरीचे होईल

सूचीच्या मध्यभागी एक घटक जोडताना (इन्सर्ट करताना) असेच काहीतरी घडते. विद्यमान घटक 1 ने उजवीकडे हलवले जातात आणि पास केलेले घटक अॅरेच्या नव्याने मुक्त केलेल्या सेलमध्ये लिहिले जातात.

आता आम्ही सूचीचा समावेश असलेल्या सर्वात मूलभूत परिस्थितींचा विचार करू:


2. an मध्ये घटक जोडणेArrayList

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

अॅरेलिस्टमध्ये एक घटक जोडणे

आमच्याकडे एक ArrayListऑब्जेक्ट आहे ज्यामध्ये दोन फील्ड (दोन व्हेरिएबल्स): एक कंटेनर (अॅरे data) आणि संग्रहित घटकांची संख्या ( size). व्हेरिएबल dataकंटेनरचा संदर्भ (अॅरे) संग्रहित करते जे 10 घटक संचयित करू शकते.

जर आपण अॅरेमध्ये 5 क्रमांक जोडण्याचा निर्णय घेतला, तर आपल्याला खालील चित्र मिळेल:

अॅरेलिस्ट 2 मध्ये एक घटक जोडणे

अॅरे आता घटक 5, आणि संग्रहित करते size == 1.

जर कोणी size()आमच्या ArrayListऑब्जेक्टवर आता मेथड कॉल केला, तर रिटर्न व्हॅल्यू सूचीमध्ये संग्रहित घटकांची संख्या असेल: 1. सूचीमधील घटकांची संख्या अॅरेच्या संचयन क्षमतेएवढी नाही.

सध्याची स्टोरेज क्षमता किंवा अॅरे कधीही ऑब्जेक्टच्या बाहेर प्रवेश करण्यायोग्य (दृश्यमान) असणार नाही ArrayList. ArrayListहा अंतर्गत डेटा आहे आणि नेहमीच राहील .

चला सूचीमध्ये आणखी 7 संख्या जोडू: 10, 20, 30, 40, 50, 60, 70.

आता मेमरी असे दिसेल:

अॅरेलिस्टमध्ये एक घटक जोडणे

जर तुम्ही size()आता पद्धत कॉल केली, तर ती 8 क्रमांक देईल, जी यादीतील घटकांची नवीन संख्या आहे. या मूल्याचा अंतर्गत अॅरेच्या आकाराशी काहीही संबंध नाही.

महत्वाचे:

या चित्रात एक oversimplification आहे.

वर्ग ArrayListआदिम प्रकार संचयित करू शकत नाही, म्हणून तो Integerऐवजी प्रकार वापरतो int. कंटेनर थेट मूल्ये {5, 10, 20, 30, 40, 50, 60, 70} संचयित करत नाही, तर वस्तूंचे संदर्भ देते Integer. कंटेनर स्टोअरमधील सर्व रिकाम्या पेशी null.



3. सूचीची लांबी वाढवणे

जेव्हा सूचीच्या अंतर्गत अॅरेमध्ये अधिक रिक्त सेल नसतात तेव्हा त्यामध्ये काय होते ते पाहूया.

समजा आपल्याकडे 10 घटकांची यादी आहे:

यादीची लांबी वाढवणे

आम्ही त्यात 100 क्रमांक जोडण्याचे ठरवतो . या पद्धतीमध्ये असे घडते add():

पायरी 1 - एक नवीन अॅरे तयार करा:

सूचीची लांबी वाढवणे 2

पायरी 2 - जुन्या अॅरेमधून नवीनमध्ये सर्व घटक कॉपी करा:

सूचीची लांबी वाढवणे 2

पायरी 3 — जुना अॅरे बदला (ऑब्जेक्टच्या अंतर्गत अॅरेचा संदर्भ बदला ArrayList):

सूचीची लांबी वाढवणे 3

पायरी 4 — नवीन नंबर जोडा, जे पूर्ण करण्यासाठी आम्ही खूप मेहनत केली आहे:

सूचीची लांबी वाढवणे 4