ArrayList आणि Vector दरम्यान फरक

Anonim

ArrayList vs वेक्टर

वेक्टर अवजारे अॅरज जे रनटाइममध्ये वाढू शकतात / कमी होतात जेव्हा काही घटक जोडले जातात किंवा त्यातून काढून टाकले जातात तेव्हा त्याचा घटक वापरतात. एका पूर्णांक इंडेक्सद्वारे त्याचा घटक ऍक्सेस केला जातो. दोन फील्ड - क्षमता आणि क्षमता वाढ, वेक्टर स्टोरेज व्यवस्थापन विशेषता. हे चार संवाद लागू करते:

* सूची

* यादृच्छिक प्रवेश

* क्लोन करण्यायोग्य

* सीरियलझेबल इंटरफेस

अॅरेलाइस्ट, अगदी व्हेक्टर प्रमाणेच, चार इंटरफेस देखील कार्यान्वित करते. पुन्हा, वैक्टरसारखे, त्याचा आकार रनटाइममध्ये बदलू शकतो. तसेच, त्याच्याकडे फील्ड नावाची क्षमता आहे ज्याचा आकार ArrayList च्या आकारापेक्षा मोठा आहे.

घटक आणि ArrayList दोन्ही कोणत्याही स्थितीतून घटक पुनर्प्राप्त करण्यासाठी चांगले आहेत आणि कंटेनर श्रेणीच्या समाप्तीपासून घटक जोडण्यासाठी किंवा काढून टाकण्यासाठी चांगले आहेत.

एपीआय दृष्टीकोनावरुन, दोन्ही व्हेक्टर तसेच अॅरेअलाइस्ट हे अतिशय समान आहेत. तर मग त्यातील फरक नेमका कुठे आहे? खालील मुद्द्यांवर काही प्रकाश टाकला जाईल:

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

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

3 घटकांचा पाठपुरावा: ArrayList चा एक फायदा येथे आहे कारण आपण फक्त एका निर्देशांकाने त्याचा घटक ऍक्सेस करू शकता. व्हॅक्टर्सच्या बाबतीत, आपण त्याच्या घटकांचा शोध घेण्यासाठी एक इटरेटर तयार करणे आवश्यक आहे.

सारांश:

1 कंटेनर वर्गात एक धागा किंवा काही लोकल व्हेरिएबल द्वारे सुधारित करायचा असल्यास, आपण ArrayList वापरणे आवश्यक आहे.

2 कंटेनर क्लासला एकाधिक थ्रेड्सद्वारे प्रवेश केला जातो तेव्हा वैक्टर वापरतात अन्यथा आपल्याला स्वहस्ते सिंक्रोनाइझेशन करावे लागेल.

3 आपण सदिशाने वाढीचा आकार निर्दिष्ट करू शकतो आणि ArrayList द्वारे आपण हे करू शकत नाही.

4 सदिश सिंक्रोनाईज आहे आणि एक ArrayList नाही.

5 सदिशाने दुप्पट आकार वाढू शकतो; ArrayList 50% पर्यंत वाढवू शकतो.<