1. कंटेनर और संग्रह

कंटेनर या संग्रह वे वर्ग हैं जो आपको एक साथ कई वस्तुओं को संग्रहीत और संसाधित करने देते हैं। आप पहले से ही दो प्रकार के कंटेनरों को जानते हैं: सरणियाँ और सूचियाँ।

जावा में कई दर्जन संग्रह हैं, जिनमें से प्रत्येक तत्वों को अपने विशिष्ट तरीके से संग्रहीत करता है। यहां उनमें से कुछ हैं:

संग्रह कक्षा विवरण
List
ArrayList
सूची
LinkedList
लिंक्ड सूची
Vector
वेक्टर
Stack
ढेर
Set
HashSet
तय करना
TreeSet
LinkedHashSet
Queue
PriorityQueue
कतार
ArrayQueue
Map
HashMap
मानचित्र/शब्दकोश
TreeMap
HashTable

नाम यहाँ कुछ अस्पष्ट हैं। अधिकांश प्रोग्रामिंग भाषाओं में, इन सभी डेटा संरचनाओं को संग्रह कहा जाता है, लेकिन जावा में नहीं। जावा में, इनमें से कुछ वर्ग Collectionइंटरफ़ेस को लागू करते हैं, जबकि अन्य नहीं करते हैं।

तदनुसार, संग्रह को व्यापक अर्थों में संग्रह और संकीर्ण अर्थ में संग्रह में विभाजित किया गया है (केवल वे जो Collectionइंटरफ़ेस को लागू करते हैं)।

इसलिए भ्रम से बचने के लिए, जब हम संग्रह की बात करते हैं तो हमारा मतलब शब्द के संकीर्ण अर्थों में होता है, यानी वे वर्ग जो Collectionइंटरफ़ेस को लागू करते हैं। , और प्रकार सभी संग्रह हैं List। व्यापक अर्थों में संग्रह को आम तौर पर कंटेनर कहा जाता है । इनमें प्रकार और सरणियाँ शामिल हैं।SetQueueMap


2. HashSetसंग्रह

वर्ग HashSetएक विशिष्ट सेट संग्रह है। कई मायनों में यह ArrayListक्लास के समान है। कुछ मायनों में, यह अधिक आदिम संस्करण है।

आप एक कथन का उपयोग करके एक वस्तु बना सकते हैं HashSetजैसे:

HashSet<Type> name = new HashSet<Type>();

संग्रह में हम किस Typeप्रकार के तत्वों को संग्रहित करेंगे ।HashSet

कक्षा HashSetमें इस तरह के तरीके हैं:

तरीका विवरण
void add(Type value)
valueसंग्रह में तत्व जोड़ता है
boolean remove(Type value)
valueसंग्रह से तत्व को हटाता है । अगर ऐसा कोई तत्व होता है तो
लौटाता हैtrue
boolean contains(Type value)
जांचता है कि संग्रह में कोई valueतत्व है या नहीं
void clear()
सभी तत्वों को हटाते हुए संग्रह को साफ़ करता है
int size()
संग्रह में तत्वों की संख्या लौटाता है

यहाँ एक सेट का उपयोग करने का एक उदाहरण दिया गया है।

आइए एक प्रोग्राम लिखें जो उपयोगकर्ता को अलविदा कहता है यदि वह हैलो कहता है। इसे और दिलचस्प बनाने के लिए, हम अपने प्रोग्राम को "हैलो" को कई भाषाओं में समझने की क्षमता देंगे।

कोड टिप्पणी
HashSet<String> set = new HashSet<String>();

set.add("Hallo");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
HashSetएक वस्तु बनाएँ जो Stringतत्वों को संग्रहीत करती है। हम चर


में विभिन्न भाषाओं में अभिवादन जोड़ते हैं । कंसोल से एक पंक्ति पढ़ें। यदि स्ट्रिंग हमारे अभिवादन के सेट में है, तो हम अलविदा कहते हैं। set









3. सेट करें

संग्रह Setको तत्वों का एक सेट रखने के लिए डिज़ाइन किया गया है। इसलिए इसे Set(सेट) कहा जाता है। इस संग्रह की तीन विशेषताएं हैं।

एक सेट पर संचालन

एक सेट के साथ आप केवल तीन चीजें कर सकते हैं: सेट में तत्व जोड़ें, सेट से तत्व हटाएं, और जांचें कि सेट में कोई विशिष्ट तत्व है या नहीं। इतना ही।

कोई आदेश नहीं

इस संग्रह के तत्वों में सूचकांक नहीं हैं। आप किसी इंडेक्स द्वारा तत्व प्राप्त नहीं कर सकते हैं, या किसी विशिष्ट इंडेक्स पर संग्रह के लिए मान लिख सकते हैं। एक सेट में कोई get()और set()तरीके नहीं हैं।

अद्वितीय तत्व

एक सेट में सभी तत्व अद्वितीय हैं। सूची के विपरीत, एक सेट में एक तत्व का केवल एक उदाहरण हो सकता है। एक वस्तु या तो सेट में है या नहीं - तीसरा कोई विकल्प नहीं है। आप रंगों के एक सेट में तीन बार काला नहीं जोड़ सकते। यह या तो है या नहीं है।

तत्वों का पता लगाना

जब आप एक नया तत्व जोड़ते हैं, एक तत्व को हटाते हैं, या जाँचते हैं कि क्या एक तत्व एक सेट में मौजूद है, तो तत्व की खोज विधि में की जाती है। पारित तत्व की तुलना पहले संग्रह के तत्वों के साथ की जाती है , और फिर यदि मिलान hashCode()द्वारा लौटाए गए मान , द्वारा ।hashCode()equals()



4. तुलना संग्रह: ListबनामSet

आइए दो प्रकार के संग्रहों की तुलना करें: Listऔर Setहम मुख्य अंतरों को देखेंगे, जब एक दूसरे की तुलना में अधिक लाभप्रद होता है, और इसके विपरीत।

आइए एक उदाहरण के रूप में खिलौनों का उपयोग करके सूची और सेट की तुलना करने का प्रयास करें।

List(सूची) संग्रह एक प्लेरूम में दीवार के साथ व्यवस्थित खिलौनों के एक सेट की तरह है। आप सूची के अंत में एक खिलौना जोड़ सकते हैं। यदि आपको वास्तव में जरूरत है, तो आप इसे बीच में भी डाल सकते हैं (लेकिन कुछ मौजूदा खिलौनों को स्थानांतरित करना होगा)।

प्रत्येक खिलौने में एक इंडेक्स होता है। आप किसी खिलौने को उसकी अनुक्रमणिका से संदर्भित कर सकते हैं और खिलौना संख्या 7 को खिलौना संख्या 13 से भी बदल सकते हैं। आप खिलौना संख्या 4 को सूची से हटा सकते हैं। अंत में, आप सूची में प्रत्येक खिलौने की अनुक्रमणिका सीख सकते हैं।

Set(सेट) संग्रह फर्श के बीच में खिलौनों के ढेर जैसा है। आप ढेर में एक खिलौना जोड़ सकते हैं, और आप ढेर से एक खिलौना निकाल सकते हैं। लेकिन इन खिलौनों के साथ कोई फिक्स इंडेक्स नहीं जुड़ा है।

या मान लीजिए कि आप अपने बच्चे के जन्मदिन के लिए कोई खिलौना चुन रहे हैं। सबसे पहले, आप सोचें कि क्या उसके पास पहले से ही खिलौना है। उसके पास पहले से मौजूद सभी खिलौने खिलौनों का एक सेट बनाते हैं जिसे आप खरीदना नहीं चुनेंगे।

इस दृष्टिकोण से, आप देख सकते हैं कि "खिलौने जो पहले से मौजूद हैं" के सेट में खिलौनों का क्रम कोई मायने नहीं रखता है, न ही इससे कोई फर्क पड़ता है कि जन्मदिन के लड़के के पास किसी विशेष खिलौने के दो उदाहरण हैं। आपको प्रत्येक खिलौने के क्रम या संख्या में कोई दिलचस्पी नहीं है। आप जिस चीज की परवाह करते हैं वह सेट में मौजूद प्रत्येक अद्वितीय खिलौने को जानना है।

इस तरह के मामलों के लिए, आपको Setसंग्रह की आवश्यकता होती है। इसका सबसे लोकप्रिय कार्यान्वयन HashSetवर्ग है।