Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में HashMap की आंतरिक कार्यप्रणाली


'hashCode' फंक्शन का उपयोग Java में ऑब्जेक्ट का हैश कोड प्राप्त करने के लिए किया जाता है। यह सुपर क्लास Object का एक ऑब्जेक्ट है। यह ऑब्जेक्ट रेफरेंस की मेमोरी को इंटीजर के रूप में वापस करता है। यह एक नेटिव फंक्शन है, जिसका अर्थ है कि Java में कोई डायरेक्ट मेथड नहीं है जिसका उपयोग ऑब्जेक्ट के रेफरेंस को प्राप्त करने के लिए किया जा सके।

HashMap के बेहतर प्रदर्शन के लिए, hashCode() का सही उपयोग करें। मूल रूप से, इस फंक्शन का उपयोग बकेट और इंडेक्स मानों की गणना के लिए किया जाता है। इसे निम्न तरीके से परिभाषित किया गया है:

public native hashCode()

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

Capacity = number of buckets * load factor

'equals' फंक्शन का उपयोग दो ऑब्जेक्ट्स के बीच समानता की जांच के लिए किया जाता है। यह भी सुपर क्लास Object द्वारा दिया जाता है। इस फंक्शन को कस्टमाइज़्ड क्लास में कस्टमाइज़्ड कार्यान्वयन प्रदान करके ओवरराइड किया जा सकता है। यह फंक्शन true या false वापस करता है, इस पर निर्भर करता है कि प्रश्न में दो ऑब्जेक्ट समान हैं या नहीं।

एक इंडेक्स मान उत्पन्न किया जाता है ताकि ऐरे का आकार बड़ा न हो, जिससे OutOfMemoryException से बचा जा सके। ऐरे के इंडेक्स को खोजने का सूत्र है:

Index = hashCode(key) & (n-1) – यहां n बकेट की संख्या को संदर्भित करता है।

आइए एक उदाहरण देखें:

उदाहरण

import java.util.HashMap; class hash_map{ String key; hash_map(String key){ this.key = key; } @Override public int hashCode(){ int hash = (int)key.charAt(0); System.out.println("The hash code for key: " + key + " = " + hash); return hash; } @Override public boolean equals(Object obj){ return key.equals(((hash_map)obj).key); } } public class Demo{ public static void main(String[] args){ HashMap my_map = new HashMap(); my_map.put(new hash_map("This"), 15); my_map.put(new hash_map("is"), 35); my_map.put(new hash_map("a"), 26); my_map.put(new hash_map("sample"), 45); System.out.println("The value for key 'this' is: " + my_map.get(new hash_map("This"))); System.out.println("The value for key 'is' is: " + my_map.get(new hash_map("is"))); System.out.println("The value for key 'a' is: " + my_map.get(new hash_map("a"))); System.out.println("The value for key 'sample' is: " + my_map.get(new hash_map("sample"))); } }

आउटपुट

The hash code for key: This = 84 The hash code for key: is = 105 The hash code for key: a = 97 The hash code for key: sample = 115 The hash code for key: This = 84 The value for key 'this' is: 15 The hash code for key: is = 105 The value for key 'is' is: 35 The hash code for key: a = 97 The value for key 'a' is: 26 The hash code for key: sample = 115 The value for key 'sample' is: 45

'hash_map' नामक क्लास एक स्ट्रिंग और एक कंस्ट्रक्टर परिभाषित करती है। इसे 'hashCode' नामक दूसरे फंक्शन द्वारा ओवरराइड किया जाता है। यहां, हैशमैप की कुंजी मानों को इंटीजर में कन्वर्ट किया जाता है और हैश कोड प्रिंट किया जाता है। अगला, 'equals' फंक्शन ओवरराइड किया जाता है और जांचता है कि कुंजी हैशमैप की कुंजी के बराबर है या नहीं। Demo क्लास मुख्य फंक्शन परिभाषित करती है जहां HashMap का नया इंस्टेंस बनाया जाता है। 'put' फंक्शन का उपयोग करके इस संरचना में एलिमेंट्स जोड़े जाते हैं और कंसोल पर प्रिंट किए जाते हैं।

  1. पायथन का आंतरिक कार्यान्वयन पायथन का आंतरिक कार्यान्वयन

    इस लेख में, हम पायथन के आंतरिक कार्यान्वयन और पायथन इंटरप्रेटर द्वारा विभिन्न ऑब्जेक्ट्स को मेमोरी में स्पेस आवंटित करने के तरीके के बारे में जानेंगे।पायथन जावा की तरह एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कंस्ट्रक्ट लैंग्वेज है। पायथन एक इंटरप्रेटर का उपयोग करता है और इसलिए इसे इंटरप्रेटेड लैंग्वेज कहा

  1. पायथन में लिस्ट (List) का आंतरिक कार्यान्वयन पायथन में लिस्ट (List) का आंतरिक कार्यान्वयन

    इस ट्यूटोरियल में, हम पायथन 3.x या उससे पहले के संस्करण में लिस्ट (List) के आंतरिक कार्यान्वयन के बारे में जानेंगे। हम यह भी देखेंगे कि जब हम प्रत्येक चरण में एक पायथन स्टेटमेंट लिखते हैं तो ऑब्जेक्ट और फ्रेम कैसे बनते हैं।लिस्ट इनिशियलाइज़ करना: इसका मतलब है कि हम कुछ तत्वों के साथ एक लिस्ट बना रहे

  1. विंडोज 10 में नॉन-रिस्पॉन्सिव विंडोज की को ठीक करें: त्वरित समस्या निवारण गाइड विंडोज 10 में नॉन-रिस्पॉन्सिव विंडोज की को ठीक करें: त्वरित समस्या निवारण गाइड

    विंडोज 10 में विंडोज की काम नहीं कर रही? विंडोज की, जिसे विनकी (WinKey) के नाम से भी जाना जाता है, स्टार्ट मेनू की शुरुआत के बाद से अस्तित्व में है। विंडोज आइकन वाली यह भौतिक कुंजी हर कीबोर्ड पर fn कुंजी और alt कुंजी के बीच पाई जा सकती है। विंडोज की का एक साधारण प्रेस स्टार्ट मेनू लॉन्च करता है जो ब