Vector
जावा 1.0 से एक विरासत संग्रह कक्षा है। जावा 1.2 में (बहुत पहले!), Collections Framework जोड़ा गया था जिसमें ArrayList
और HashMap
जैसे नए संग्रह वर्ग शामिल थे, जिनका उद्देश्य विरासत कक्षा Vector
और Hashtable
को प्रतिस्थापित करना था।
जैसा कि पहले कहा गया था, विरासत संग्रह कक्षाओं में अंतर्निहित सिंक्रनाइज़ेशन था, जो कई अनुप्रयोगों के लिए अनावश्यक है। सिंक्रनाइज़ेशन में एक प्रदर्शन ओवरहेड होता है, इसलिए यदि यह आवश्यक नहीं है, तो आपको इसका उपयोग नहीं करना चाहिए।
कुछ मामलों में (जब आपका प्रोग्राम बहु-थ्रेडेड होता है, और एकाधिक थ्रेड एक ही डेटा तक पहुंचते हैं) तो आपको अपने संग्रह सिंक्रनाइज़ करने की आवश्यकता होती है। कुछ लोगों को तो पुराने Vector
या Hashtable
कक्षाओं का प्रयोग करेंगे, लेकिन एक बेहतर तरीका उदाहरण के लिए एक ArrayList
के साथ एक तुल्यकालन आवरण का उपयोग करने के लिए है:
// Your standard, unsynchronized list
List<String> data = new ArrayList<String>();
// Use this to put it into a synchronization wrapper
List<String> syncedData = Collections.synchronizedList(data);
अधिक जानकारी के लिए Collections.synchronizedList()
(और अन्य तरीकों) की API दस्तावेज़ देखें।
यह उत्सुक है कि 'वेक्टर' को बहिष्कृत नहीं किया गया है। मुझे लगता है कि कोई भी एक प्रतिस्थापन नहीं है, इसलिए उन्होंने ऐसा नहीं किया है। – skaffman
ध्यान दें कि यह हैशटेबल के बारे में भी सच है - इसके बजाय हैश मैप का उपयोग करें। –
@ स्काफमैन 'CopyOnWriteArrayList' एक-एक-एक प्रतिस्थापन के रूप में कम या कम है क्योंकि यह थ्रेडसेफ' सूची' कार्यान्वयन है। अधिकांश उपयोगों के लिए, 'CopyOnWriteArrayList' को' वेक्टर ' –