जावा में किसी ऑब्जेक्ट का हैश कोड प्राप्त करने के लिए 'हैशकोड' फ़ंक्शन का उपयोग किया जाता है। यह सुपर क्लास ऑब्जेक्ट का ऑब्जेक्ट है। यह ऑब्जेक्ट रेफरेंस की मेमोरी को पूर्णांक के रूप में लौटाता है। यह एक नेटिव फंक्शन है, जिसका मतलब है कि जावा में किसी भी डायरेक्ट मेथड का इस्तेमाल ऑब्जेक्ट के रेफरेंस को लाने के लिए नहीं किया जा सकता है।
हैश मैप के बेहतर प्रदर्शन के लिए, हैशकोड () का ठीक से उपयोग करें। मूल रूप से, इस फ़ंक्शन का उपयोग बकेट और इंडेक्स मानों की गणना के लिए किया जाता है। इसे निम्नलिखित तरीके से परिभाषित किया गया है -
public native hashCode()
चूंकि हमने 'बाल्टी' का उल्लेख किया है, इसलिए इसका अर्थ समझना महत्वपूर्ण है। यह एक तत्व है जिसका उपयोग नोड्स को स्टोर करने के लिए किया जाता है। एक बाल्टी में दो से अधिक नोड हो सकते हैं। लिंक्ड सूची डेटा संरचना का उपयोग करके नोड्स को जोड़ा जा सकता है। हैशमैप की क्षमता की गणना बकेट और लोड फैक्टर का उपयोग करके की जा सकती है।
Capacity = number of buckets * load factor
फ़ंक्शन 'बराबर' का उपयोग दो वस्तुओं के बीच समानता की जाँच के लिए किया जाता है। यह सुपर क्लास ऑब्जेक्ट द्वारा भी दिया जाता है। अनुकूलित कार्यान्वयन प्रदान करके इस फ़ंक्शन को अनुकूलित वर्ग में ओवरराइड किया जा सकता है। प्रश्नों में दो ऑब्जेक्ट बराबर हैं या नहीं, इस पर निर्भर करते हुए यह फ़ंक्शन सही या गलत लौटाता है।
एक अनुक्रमणिका मान उत्पन्न होता है ताकि सरणी का आकार बड़ा न हो, जिससे outOfMemoryException से बचा जा सके। सरणी का सूचकांक ज्ञात करने का सूत्र है -
Index = hashCode(key) & (n-1) – Here n refers to number of buckets.
आइए एक उदाहरण देखें -
उदाहरण
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
'हैश_मैप' नामक एक वर्ग एक स्ट्रिंग और एक कंस्ट्रक्टर को परिभाषित करता है। यह 'हैशकोड' नामक एक अन्य फ़ंक्शन द्वारा ओवरराइड किया गया है। यहां, हैशमैप के प्रमुख मूल्यों को पूर्णांक में परिवर्तित किया जाता है और हैश कोड मुद्रित किया जाता है। इसके बाद, 'बराबर' फ़ंक्शन ओवरराइड हो जाता है और जांचता है कि कुंजी हैशमैप की कुंजी के बराबर है या नहीं। डेमो क्लास एक मुख्य फ़ंक्शन को परिभाषित करता है जहां हैश मैप का एक नया उदाहरण बनाया जाता है। तत्वों को इस संरचना में 'पुट' फ़ंक्शन का उपयोग करके जोड़ा जाता है और कंसोल पर मुद्रित किया जाता है।