अनुशंसित, 2019

संपादक की पसंद

जावा में ArrayList और वेक्टर के बीच अंतर

ArrayList और वेक्टर दोनों संग्रह फ्रेमवर्क पदानुक्रम के तहत कक्षाएं हैं। ArrayList और वेक्टर, दोनों का उपयोग वस्तुओं की एक गतिशील सरणी बनाने के लिए किया जाता है जहां सरणी आकार में आवश्यकतानुसार बढ़ सकती है। ArrayList को भेदने वाले दो बुनियादी अंतर हैं और वेक्टर यह है कि वेक्टर उन लिगेसी कक्षाओं से संबंधित है, जिन्हें बाद में संग्रह कक्षाओं का समर्थन करने के लिए पुनर्निर्मित किया गया था, जबकि एक ArrayList एक मानक संग्रह वर्ग है। एक और महत्वपूर्ण अंतर यह है कि ArrayList दूसरी ओर गैर-सिंक्रनाइज़ है; वेक्टर सिंक्रनाइज़ किया गया है।

नीचे दिखाए गए कंपैरिजन चार्ट की मदद से कुछ अन्य अंतरों का अध्ययन करते हैं।

तुलना चार्ट

तुलना के लिए आधारसारणी सूचीवेक्टर
बुनियादीArrayList वर्ग सिंक्रोनाइज़ नहीं किया गया है।सदिश वर्ग समकालिक है।
विरासत वर्गArrayList एक मानक संग्रह वर्ग है।वेक्टर एक विरासत वर्ग है, जो संग्रह वर्ग का समर्थन करने के लिए फिर से इंजीनियर है।
वर्ग घोषणावर्ग ArrayListवर्ग वेक्टर
पुनः आबंटनजब एक ArrayList निर्दिष्ट नहीं किया जाता है तो इसके आधे आकार में वृद्धि की जाती है।जब निर्दिष्ट नहीं किया जाता है, तो एक वेक्टर अपने आकार को दोगुना करने के लिए बढ़ जाता है।
प्रदर्शनजैसे कि ArrayList unsynchronized है, यह वेक्टर की तुलना में अधिक तेजी से संचालित होता है।जैसा कि वेक्टर सिंक्रनाइज़ किया गया है, यह ArrayList की तुलना में धीमी गति से संचालित होता है।
गणन / इटरेटरArrayList ArrayList में संग्रहीत वस्तुओं को पार करने के लिए Iterator इंटरफ़ेस का उपयोग करता है।वेक्टर एन्यूएरेशन का उपयोग करता है और साथ ही वेक्टर्स में संग्रहीत वस्तुओं को पार करने के लिए Iterator इंटरफ़ेस का उपयोग करता है।

ArrayList की परिभाषा

ArrayList मानक संग्रह कक्षाओं की सूची से संबंधित है। ArrayList को java.util पैकेज के अंदर परिभाषित किया गया है, यह AbstractList वर्ग का विस्तार करता है जो एक मानक संग्रह वर्ग भी है, और यह List Interfaces में परिभाषित इंटरफ़ेस को भी लागू करता है। जावा में, एक मानक सरणी हमेशा निश्चित लंबाई की होती है। इसका मतलब है कि एक बार बनाया; यह गतिशील रूप से विकसित या आकार में छोटा नहीं होता है। तो, आपको उस सरणी की लंबाई का पूर्व ज्ञान होना चाहिए जिसका आप उपयोग कर रहे हैं। लेकिन, कभी-कभी ऐसा हो सकता है कि आवश्यक लंबाई रनटाइम पर प्रकट होती है, इसलिए इस तरह की स्थिति को संभालने के लिए जावा ने ArrayList पेश किया।

ArrayList एक ऐसी सरणी के गतिशील निर्माण के लिए उपयोग किया जाता है जो वस्तुओं के संदर्भ रखती है। यह सरणी आवश्यकता के अनुसार आकार में बढ़ सकती है। कक्षा की घोषणा इस प्रकार है:

 वर्ग ArrayList 

यहाँ, E उन वस्तुओं के प्रकार को निर्दिष्ट करता है जिन्हें एक सरणी धारण करेगी। बनाई गई सरणी परिवर्तनीय लंबाई की है, और यह तब बढ़ जाती है और आकार में घट जाती है जब वस्तुओं को सूची से जोड़ा जाता है या हटा दिया जाता है।

ArrayList सिंक्रनाइज़ नहीं है इसका मतलब है कि एक ही समय में एक से अधिक थ्रेड सरणी पर काम कर सकते हैं। उदाहरण के लिए, यदि एक थ्रेड ऐरे में ऑब्जेक्ट रेफरेंस जोड़ रहा है और दूसरा थ्रेड एक ही समय में उसी एरे से ऑब्जेक्ट रेफरेंस निकाल रहा है। ArrayList वर्ग का उपयोग कर एक गतिशील सरणी का निर्माण:

 ArrayList S1 = नया ArrayList (); System.out.println ("S1 का प्रारंभिक आकार:" + S1.size ()); S1.add ( "टी"); S1.add ( 'सी'); S1.add ( "एच"); S1.add (1, 'ई'); System.out.println ("इसके अलावा S1 में शामिल हैं:" + S1); System.out.println ("इसके अलावा S1 का आकार:" + S1.size ()); S1.remove ("टी"); S1.remove (2); System.out.println ("हटाने के बाद S1 में शामिल हैं:" + S1); System.out.println ("हटाने के बाद S1 का आकार:" + S1.size ()); // S1 का आउटपुट इनएक्टिव साइज़: 0 इसके अलावा S1 में शामिल हैं: [T, E, C, H]; इसके अलावा S1 का आकार: 4 हटाने के बाद S1 में शामिल हैं: [E, H] हटाने के बाद S1 का आकार: 2 

उपरोक्त कोड में, आप देख सकते हैं कि; मैंने स्ट्रिंग प्रकार की वस्तुओं की एक सरणी बनाई। मैंने ऐड () विधि का उपयोग करके कुछ वस्तुओं को सरणी S1 में जोड़ा, और बाद में हटाने () विधि का उपयोग करके कुछ ऑब्जेक्ट हटा दिए। यदि आप सरणी के प्रारंभिक आकार को निर्दिष्ट नहीं करते हैं, तो आप यह देख सकते हैं कि यह '0' की लंबाई का होगा। जैसा कि आप देख सकते हैं कि सरणी बढ़ता है और आप तत्वों को जोड़ते और आकार में सिकोड़ते हैं।

वेक्टर की परिभाषा

वेक्टर एक लेगेसी वर्ग है जिसे संग्रह फ्रेमवर्क पदानुक्रम में संग्रह वर्ग का समर्थन करने के लिए पुनर्संगठित किया गया है। वेक्टर क्लास को java.util पैकेज में भी परिभाषित किया गया है, जो AbstractList वर्ग द्वारा विस्तारित है और सूची इंटरफ़ेस द्वारा कार्यान्वित किया गया है। सदिश वर्ग निम्नानुसार घोषित किया गया है:

 वर्ग वेक्टर 

यहाँ, E उस ऑब्जेक्ट के प्रकार को परिभाषित करता है जिसे किसी सरणी में संग्रहीत किया जाएगा। वेक्टर वर्ग का उपयोग करके बनाई गई एक सरणी परिवर्तनशील लंबाई की है। यदि वेतन वृद्धि निर्दिष्ट नहीं की जाती है तो यह इसका आकार दोगुना बढ़ा देता है। आइए वेक्टर का उपयोग करके सरणी के निर्माण को समझते हैं।

 वेक्टर V = नया वेक्टर (1, 1); V.addElement ( "टेक"); V.addElement ( "मतभेद"); System.out.println ("2 जोड़ के बाद क्षमता:" + V.capacity ()); V.addElement ( "के बीच"); V.addElement ( "वाहक"); System.out.println ("वर्तमान क्षमता:" + V.capacity ()); // आउटपुट क्षमता 2 जोड़ के बाद: 2 वर्तमान क्षमता: 4 

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

ArrayList और वैक्टर के बीच महत्वपूर्ण अंतर

  1. मल्टीपल थ्रेड्स ArrayList पर एक ही समय में काम कर सकते थे इसलिए इसे अनसिंक्रनाइज़ माना जाता है। ArrayList के विपरीत, एक बार में केवल एक ही धागा वेक्टर पर काम कर सकता है; इसलिए इसे सिंक्रोनाइज्ड कहा जाता है।
  2. जावा के शुरुआती संस्करण में, कुछ कक्षाएं और इंटरफेस ऑब्जेक्ट्स को स्टोर करने के तरीके प्रदान करेंगे, जिन्हें वे लेगेसी कक्षाएं कहा जाता था वेक्टर जावा के लिगेसी वर्ग में से एक है। बाद में, इन विरासत वर्गों को संग्रह कक्षा का समर्थन करने के लिए पुनर्निर्मित किया गया था, जबकि, ArrayList वर्ग एक मानक संग्रह वर्ग है।
  3. जब किसी सरणी की सीमा पूरी तरह से उपयोग की जाती है और थका हुआ सरणी के बगल में एक नई वस्तु को जोड़ा जाता है, तो इसका आकार दोनों मामलों में बढ़ता है अर्थात ArrayList में और वेक्टर में भी लेकिन, अंतर यह है कि ArrayList में, यदि आकार निर्दिष्ट नहीं किया गया वर्तमान सरणी का 50% बढ़ा है, जबकि वेक्टर सरणी आकार में दोगुना है यदि वेतन वृद्धि निर्दिष्ट नहीं है।
  4. वेक्टर एक सरणी को पार करने के लिए Enumeration के साथ-साथ Iterator का उपयोग करता है जबकि, एक ArrayList केवल सरणी को ट्रैवर्स करने के लिए पुनरावृत्ति का उपयोग करता है।
  5. चूंकि ArrayList Unsynchronized है और कई धागे उस पर काम कर सकते हैं, उसी समय इसका प्रदर्शन वेक्टर से बेहतर होता है, जिस पर एक समय में केवल एक धागा काम कर सकता है।

समानता:

  1. ArrayList और वेक्टर दोनों को java.util पैकेज में परिभाषित किया गया है।
  2. ArrayList और वेक्टर दोनों AbsractList वर्ग का विस्तार करते हैं।
  3. ArrayList और वेक्टर, दोनों इंटरफ़ेस सूची को लागू करते हैं।
  4. ArrayList और Vectors दोनों का उपयोग एक गतिशील सरणी बनाने के लिए किया जाता है जो आवश्यकतानुसार बढ़ता है।
  5. ArrayList और वेक्टर दोनों वस्तु संदर्भ रखते हैं।

निष्कर्ष:

मैं यह कहकर निष्कर्ष निकालता हूं कि ऐरेलेस्ट का उपयोग वेक्टर के उपयोग से बेहतर है क्योंकि यह तेजी से और बेहतर प्रदर्शन करता है।

Top