अरेलिस्ट बनाम वेक्टर
एक सरणी सूची को एक गतिशील सरणी के रूप में देखा जा सकता है, जो आकार में बढ़ सकती है। इस कारण से, प्रोग्रामर को सरणी सूची के आकार को जानने की आवश्यकता नहीं होती है जब वह इसे परिभाषित कर रहा होता है। वेक्टर को एक सरणी के रूप में भी देखा जा सकता है जो आकार में बढ़ सकता है। वेक्टरों को आसानी से आवंटित किया जा सकता है और इसका उपयोग तब किया जा सकता है जब भंडारण के आवश्यक आकार को रनटाइम तक नहीं जाना जाता है।
एक Arraylist क्या है?
एक सरणी सूची को एक गतिशील सरणी के रूप में देखा जा सकता है, जो आकार में बढ़ सकती है। इसलिए सरणी सूची उस स्थिति में उपयोग करने के लिए आदर्श हैं जिसमें आप घोषणा के समय आवश्यक तत्वों के आकार को नहीं जानते हैं।जावा में, सरणी सूचियाँ केवल वस्तुओं को पकड़ सकती हैं, वे सीधे आदिम प्रकारों को नहीं रख सकती हैं (आप आदिम प्रकारों को किसी वस्तु के अंदर रख सकते हैं या आदिम प्रकारों के आवरण वर्गों का उपयोग कर सकते हैं)। आम तौर पर सरणी सूचियों को सम्मिलन, विलोपन और खोज करने के तरीकों के साथ प्रदान किया जाता है। किसी तत्व तक पहुँचने की समय जटिलता o (1) है, जबकि सम्मिलन और विलोपन की समय जटिलता o (n) है। जावा में, फ़ोरैच लूप्स, इटरेटर्स या केवल इंडेक्स का उपयोग करके सरणी सूचियों का पता लगाया जा सकता है। जावा में, ऐरेलिस्ट को संस्करण 1.2 से पेश किया गया था और यह जावा कलेक्शंस फ्रेमवर्क का हिस्सा है।
वेक्टर क्या है?
वेक्टर भी एक सरणी है जो आकार में बढ़ सकती है। वैक्टर को आसानी से आवंटित किया जा सकता है और इसका उपयोग तब किया जा सकता है जब भंडारण का आवश्यक आकार रनटाइम तक ज्ञात न हो। वेक्टर भी केवल वस्तुओं को पकड़ सकते हैं और आदिम प्रकार नहीं रख सकते। वेक्टर सिंक्रनाइज़ हैं, इसलिए बहु-थ्रेडेड वातावरण में सुरक्षित रूप से उपयोग किया जा सकता है। वेक्टर को वस्तुओं को जोड़ने, वस्तुओं को हटाने और वस्तुओं को खोजने के तरीकों के साथ प्रदान किया जाता है।जावा में ऐरेलिस्ट के समान, वैक्टर को फ़ोरैच लूप्स, इटरेटर्स या केवल इंडेक्स का उपयोग करके ट्रैवर्स किया जा सकता है। जब जावा की बात आती है, तो जावा के पहले संस्करण के बाद से वैक्टर को शामिल किया गया है।
ऐरेलिस्ट और वेक्टर में क्या अंतर है?
भले ही सरणी सूचियाँ और वैक्टर दोनों गतिशील सरणियों के समान हैं जो आकार में बढ़ सकते हैं, उनमें कुछ महत्वपूर्ण अंतर हैं। सरणी सूची और वैक्टर के बीच मुख्य अंतर यह है कि वैक्टर को सिंक्रनाइज़ किया जाता है जबकि सरणी सूची को अनसिंक्रनाइज़ किया जाता है। इसलिए मल्टीथ्रेडेड वातावरण में सरणी सूची का उपयोग करना उपयुक्त नहीं होगा, जबकि वैक्टर को मल्टीथ्रेडेड वातावरण में सुरक्षित रूप से उपयोग किया जा सकता है (क्योंकि वे थ्रेड सुरक्षित हैं)। लेकिन वैक्टर में सिंक्रोनाइज़ेशन से प्रदर्शन में कमी आएगी। इसलिए एकल थ्रेडेड वातावरण में वैक्टर का उपयोग करना अच्छा नहीं होगा। आंतरिक रूप से, सरणी सूची और वैक्टर दोनों वस्तुओं को रखने के लिए सरणियों का उपयोग करते हैं। जब वर्तमान स्थान पर्याप्त नहीं होता है, तो वैक्टर अपने आंतरिक सरणी के आकार को दोगुना कर देंगे, जबकि सरणी सूची इसके आंतरिक सरणी के आकार को 50% तक बढ़ा देती है।लेकिन सरणी सूची और वैक्टर दोनों का उपयोग करते समय, एक उपयुक्त प्रारंभिक क्षमता देकर, आंतरिक सरणी के अनावश्यक आकार बदलने से बचा जा सकता है। ऐसी स्थिति में जब डेटा की वृद्धि दर ज्ञात हो, वैक्टर का उपयोग करना अधिक उपयुक्त होगा क्योंकि वैक्टर के वृद्धिशील मूल्य को परिभाषित किया जा सकता है।