तुलना चार्ट
तुलना के लिए आधार | हैश मैप | LinkedHashMap |
---|---|---|
बुनियादी | HashMap में सम्मिलन आदेश संरक्षित नहीं है। | सम्मिलन आदेश LinkedHashMap में संरक्षित है। |
डेटा संरचना | HashMap नक्शे को संग्रहीत करने के लिए HashTable का उपयोग करता है। | LinkedHashMap नक्शे को संग्रहीत करने के लिए लिंक्ड सूची के साथ हैशटेबल का उपयोग करता है। |
का विस्तार / इम्प्लीमेन्ट्स | HashMap AbstractMap और नक्शे इंटरफ़ेस लागू करता है। | लिंक्डहाशपैप हैशमैप का विस्तार करता है। |
संस्करण | HashMap JDK 2.0 में पेश किया गया था। | LinkedHashMap JDK 4.0 में पेश किया गया था। |
भूमि के ऊपर | तुलनात्मक रूप से कम ओवरहेड। | तुलनात्मक रूप से अधिक उपरि क्योंकि इसे मानचित्र प्रविष्टियों के क्रम को बनाए रखना है। |
हाशप की परिभाषा
HashMap एक वर्ग है जिसका उपयोग मानचित्र बनाने के लिए किया जाता है। यह मैप इंटरफेस को लागू करता है। यह एब्सट्रैक्ट क्लास को भी बढ़ाता है ताकि मैप में प्रविष्टियों को स्टोर करने के लिए यह हैश टेबल का उपयोग कर सके। मानचित्र की प्रविष्टियाँ एक जोड़ी है जहाँ प्रत्येक कुंजी मान के साथ जुड़ी होती है। प्रविष्टि में कुंजी का उपयोग मूल्य को पुनः प्राप्त करने के लिए किया जाता है इसलिए, कुंजी अद्वितीय होनी चाहिए। इसीलिए HashMap में डुप्लिकेट कुंजियों की अनुमति नहीं है। लेकिन मानचित्र की प्रत्येक प्रविष्टि में कुंजी भिन्न प्रकार की हो सकती है अर्थात हाशप द्वारा बनाए गए मानचित्र की कुंजियाँ विषम हो सकती हैं। मैप को संग्रहीत करने के लिए हैशपॉप द्वारा उपयोग की जाने वाली डेटा संरचना एक हैश तालिका है।
HashMap में प्रविष्टियों का प्रविष्टि क्रम संरक्षित नहीं है। HashMap का उपयोग करके बनाए गए मानचित्र में प्रविष्टियों का प्रविष्टि प्रविष्टियों में कुंजियों द्वारा गणना की गई हैश कोड पर आधारित है। यदि गलती से आपने HashMap में एक डुप्लिकेट कुंजी दर्ज की है, तो यह उस कुंजी के पिछले मूल्य को नए मूल्य के साथ बदल देगा जो प्रस्तावित है और पुराने मूल्य को वापस कर देगा। यदि कोई डुप्लिकेट कुंजी का उपयोग नहीं किया गया है और कोई प्रतिस्थापन नहीं हुआ है, तो कुंजी हमेशा नल को वापस कर देती है। आइए देखें कि निम्न उदाहरण के साथ हैश मैप में प्रविष्टियों को कैसे जोड़ा जाए।
हशमप hm = new Hashmap (); hm.put ("अजय", 275); hm.put ("विजय", 250); hm.put ("जॉनी", 150); hm.put ("जॉर्डन", 200); System.out.println (hm); / * आउटपुट * / {विजय = 250, जॉनी = 150, अजय = 275, जॉर्डन = 200}
जैसा कि उपरोक्त कोड में, आप देख सकते हैं कि मैंने HashMap का एक ऑब्जेक्ट बनाया है और पुट विधि का उपयोग करके प्रविष्टियों को जोड़ा है और जब मैंने HashMap ऑब्जेक्ट को प्रिंट किया है, तो प्रविष्टियां उस क्रम में प्रिंट नहीं की जाती हैं जिस क्रम में उन्हें डाला गया था। इसलिए, आप हैशपॉप में प्रविष्टियों के क्रम का दिखावा नहीं कर सकते हैं। हैशपैप मैप इंटरफेस और एब्स्ट्रैक्ट क्लास के सभी तरीकों का उपयोग करता है और किसी भी नई विधि का परिचय नहीं देता है; इसके अपने निर्माता हैं। हैश मैप की डिफ़ॉल्ट क्षमता 16 और डिफ़ॉल्ट भरण अनुपात 0.75 है ।
LinkedHashMap की परिभाषा
LinkedHashMap एक नक्शा बनाने के लिए एक वर्ग उपयोग भी है। LinkedHashMap HashMap वर्ग का विस्तार करता है और बाद में JDK संस्करण 4.0 में HashMap के लिए पेश किया गया था। HashMap वर्ग का बच्चा वर्ग होने के नाते LinkedHashMap बिल्कुल वैसा ही है, जैसा कि कंस्ट्रक्टर और तरीकों सहित HashMap वर्ग। लेकिन, LinkedHashMap इस मायने में अलग है कि यह नक्शे में प्रविष्टियों के सम्मिलन के क्रम को बनाए रखता है। मैप को संग्रहीत करने के लिए लिंक्डहैश मैप द्वारा उपयोग की जाने वाली डेटा संरचना लिंक की गई सूची और हैश टेबल है ।
HashMap द्वारा विरासत में मिली विधियों के अलावा, LinkedHashMap एक नई विधि का परिचय देता है जो कि RemoveEldestEntry () है । इस पद्धति का उपयोग मानचित्र में सबसे पुरानी प्रविष्टि को हटाने के लिए किया जाता है। LinkedHashMap की डिफ़ॉल्ट क्षमता 16 है, और डिफ़ॉल्ट भराव अनुपात 0.75 है जो हाशप वर्ग के समान है।
जावा में HashMap और LinkedHashMap के बीच महत्वपूर्ण अंतर
- सबसे महत्वपूर्ण अंतर यह है कि HashMap का सम्मिलन क्रम संरक्षित नहीं है, जबकि, LinkedHashMap का सम्मिलन क्रम संरक्षित है ।
- मानचित्र के तत्वों को संग्रहीत करने के लिए HashMap द्वारा उपयोग की जाने वाली डेटा संरचना हैशटेबल है । दूसरी ओर, लिंक्डहाशपैप द्वारा उपयोग की जाने वाली डेटा संरचना लिंक्ड सूची और हैशटेबल है।
- HashMap वर्ग AbstractMap वर्ग का विस्तार करता है और मानचित्र इंटरफ़ेस को लागू करता है। हालाँकि, LinkedHashMap वर्ग, HashMap वर्ग का एक बच्चा वर्ग है, यानी LinkedHashMap वर्ग, HashMap वर्ग का विस्तार करता है।
- HashMap वर्ग JDK 2.0 संस्करण में पेश किया गया था। LinkedHashMap वर्ग को बाद में JDK 4.0 संस्करण में पेश किया गया था।
- तुलनात्मक रूप से लिंक्डहाशपॉप क्लास में हैशपॉप से अधिक ओवरहेड है क्योंकि इसे मैप में सम्मिलित तत्वों के क्रम को बनाए रखना है।
निष्कर्ष:
LinkedHashMap का उपयोग केवल उस स्थान पर किया जाना चाहिए जहां हम मानचित्र में सम्मिलित तत्वों के अनुक्रम के बारे में चिंतित हैं।