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