सरणी सूची और वेक्टर के बीच अंतर

Anonim

सरणी बनाम वेक्टर

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

एक सरणी सूची क्या है?

एक सरणी सूची को एक गतिशील सरणी के रूप में देखा जा सकता है, जो आकार में बढ़ सकता है। इसलिए स्थिति में उपयोग करने के लिए सरलीसूची आदर्श होते हैं जिसमें आप घोषणा के समय आवश्यक तत्वों के आकार को नहीं जानते हैं। जावा में, ऑर्लेलिस्ट केवल ऑब्जेक्ट को पकड़ सकता है, वे आदिम प्रकारों को सीधे पकड़ नहीं सकते (आप एक ऑब्जेक्ट के अंदर आदिम प्रकार डाल सकते हैं या आदिम प्रकार के आवरण वर्गों का उपयोग कर सकते हैं)। आम तौर पर प्रविष्टियों, हटाए जाने और खोज करने के लिए सरलीकृतों को तरीकों से प्रदान किया जाता है। एक तत्व तक पहुंचने की जटिलता ओ (1) है, जबकि सम्मिलन और विलोपन में ओ (एन) की एक समय की जटिलता है। जावा में, अग्रसारण लूप, इटरेटर्स या केवल इंडेक्सस का उपयोग करके सरलीकृतों का पता लगाया जा सकता है। जावा में, सरली सूची को संस्करण 1 से पेश किया गया था। 2 और यह जावा कलेक्शंस फ्रेमवर्क का हिस्सा है।

वेक्टर क्या है?

वेक्टर भी एक सरणी है जो आकार में बढ़ सकता है वेक्टर को आसानी से आवंटित किया जा सकता है और उपयोग किया जा सकता है जब भंडारण के आवश्यक आकार रनटाइम तक ज्ञात नहीं होते हैं। वेक्टर केवल ऑब्जेक्ट को भी पकड़ सकते हैं और आदिम प्रकारों को पकड़ नहीं सकते हैं। वेक्टर सिंक्रनाइज़ हैं, इसलिए इन्हें मल्टी थ्रेड परिवेश में सुरक्षित रूप से इस्तेमाल किया जा सकता है। वेक्टर ऑब्जेक्ट जोड़ने, ऑब्जेक्ट्स को हटाने और ऑब्जेक्ट्स खोज करने के तरीकों के साथ प्रदान किए जाते हैं। जावा में सरणीसूची के समान, वैक्टेक्टर्स को फोरछिक लूप, इटरेटर्स या बस इंडेक्सस का उपयोग करके ट्रैवर्स किया जा सकता है। जब यह जावा की बात आती है, वैक्टर को जावा के पहले संस्करण के बाद से शामिल किया गया है।

सरणी सूची और वेक्टर के बीच क्या अंतर है?

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