제이온

equals() बनाम hashCode()

  • लेखन भाषा: कोरियाई
  • आधार देश: सभी देशcountry-flag
  • आईटी

रचना: 2024-04-25

रचना: 2024-04-25 22:29

equals()

equals() ऑब्जेक्ट की सामग्री की तुलना करता है कि क्या वे समान हैं। इसे आमतौर पर समानता तुलना (equality comparison) कहा जाता है, और यदि आप equals() को ओवरराइड नहीं करते हैं, तो यह आंतरिक रूप से == के समान होता है, इसलिए यह पहचान तुलना (identity comparison) बन जाता है। इसलिए, यदि आप ऑब्जेक्ट की सही समानता तुलना करना चाहते हैं, तो आपको हमेशा equals() का उपयोग करना चाहिए।



hashCode()

hashCode() यह जांचता है कि क्या दो ऑब्जेक्ट समान ऑब्जेक्ट हैं। यह == के समान पहचान तुलना (identity comparison) कार्य करता है, लेकिन hashCode() विधि रनटाइम के दौरान ऑब्जेक्ट के अद्वितीय पूर्णांक मान को देता है। आमतौर पर, यह हीप (Heap) में संग्रहीत ऑब्जेक्ट के मेमोरी पते को देता है।



इस विधि में नेटिव (native) कीवर्ड लगाया गया है, और इसका मतलब है कि जब आप जावा के अलावा किसी अन्य भाषा में विकसित भाषा का उपयोग जावा में करते हैं तो इसका उपयोग किया जाता है।


हैश क्या है?

हैशिंग एक प्रक्रिया है जिसमें हैश फ़ंक्शन का उपयोग करके परिवर्तनशील आकार के इनपुट मान से निश्चित आकार का आउटपुट मान उत्पन्न होता है। हैशिंग द्वारा प्राप्त मान को हैश कोड कहा जाता है।


equals() और hashCode()

चूँकि समान ऑब्जेक्ट में समान मेमोरी पता होना चाहिए, इसलिए यह स्पष्ट है कि समान ऑब्जेक्ट में समान हैश कोड होना चाहिए। इसलिए, equals() के अलावा, hashCode() को भी ओवरराइड करना और कोड को समान हैश कोड प्रदान करने के लिए लिखना उचित है।


हैश डेटा संरचना


आइए HashSet डेटा संरचना में दो समान ऑब्जेक्ट डालते हैं, जैसा कि ऊपर दिखाया गया है। यदि आप सेट के आकार को आउटपुट करते हैं, तो यह 2 होगा। ऐसा क्यों है?


यह इसलिए है क्योंकि हैश का उपयोग करने वाली डेटा संरचना कुंजी निर्धारित करते समय hashCode() का उपयोग करती है। दूसरे शब्दों में, यह जांचने से पहले कि क्या ऑब्जेक्ट समान हैं, यह जांचता है कि क्या दो ऑब्जेक्ट के हैश कोड समान हैं, और फिर यह जांचता है कि क्या दो ऑब्जेक्ट समान हैं। इस समय, यदि hashCode() को ओवरराइड नहीं किया जाता है, तो Object का hashCode() उपयोग किया जाता है, इसलिए प्रत्येक ऑब्जेक्ट का संग्रहीत मेमोरी पता वापस कर दिया जाता है। इसलिए, हैश डेटा संरचना का उपयोग करते समय, equals() के अलावा hashCode() को भी ओवरराइड करना उचित है।



स्रोत


अपेक्षित साक्षात्कार प्रश्न और उत्तर

equals() और hashCode() का एक साथ उपयोग क्यों किया जाता है?

यह इसलिए है क्योंकि हैश का उपयोग करने वाली डेटा संरचना कुंजी निर्धारित करते समय hashCode() का उपयोग करती है। दूसरे शब्दों में, यह जांचने से पहले कि क्या ऑब्जेक्ट समान हैं, यह जांचता है कि क्या दो ऑब्जेक्ट के हैश कोड समान हैं, और फिर यह जांचता है कि क्या दो ऑब्जेक्ट समान हैं। इस समय, यदि hashCode() को ओवरराइड नहीं किया जाता है, तो Object का hashCode() उपयोग किया जाता है, इसलिए प्रत्येक ऑब्जेक्ट का संग्रहीत मेमोरी पता वापस कर दिया जाता है। इसलिए, हैश डेटा संरचना का उपयोग करते समय, equals() के अलावा hashCode() को भी ओवरराइड करना उचित है।

टिप्पणियाँ0

JWT (JSON वेब टोकन) क्या है?JWT एक खुला मानक है जो JSON ऑब्जेक्ट का उपयोग करके सुरक्षित रूप से जानकारी भेजने के लिए है। यह हेडर, पेलोड और सिग्नेचर से बना होता है, और सिग्नेचर डेटा की अखंडता और सुरक्षा सुनिश्चित करता है। सर्वर-साइड सत्र रखरखाव की आवश्यकता नहीं है, इसलिए यह बेहतर स्के
Seize the day
Seize the day
Seize the day
Seize the day

March 4, 2024

[गैर-तकनीकी, डेवलपर के रूप में जीवित रहना] 14. नव नियुक्त डेवलपर अक्सर पूछे जाने वाले तकनीकी साक्षात्कार सामग्री सारांशनव नियुक्त डेवलपर साक्षात्कार में अक्सर पूछे जाने वाले तकनीकी प्रश्न (मेमोरी क्षेत्र, डेटा संरचना, डेटाबेस आदि) को संक्षेप में प्रस्तुत किया गया है। डेवलपमेंट इंटरव्यू की तैयारी में यह मददगार होगा।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[जावा] स्ट्रीम का उपयोग करके सुस्त ढंग से अभाज्य संख्याएँ ज्ञात करनाजावा स्ट्रीम का उपयोग करके अभाज्य संख्याओं को कुशलतापूर्वक खोजने के तरीके और सुस्त मूल्यांकन के अनुप्रयोग के उदाहरण दिखाता है। विशेष रूप से, sqrt() ऑपरेशन अनुकूलन और 6k ± 1 पैटर्न के उपयोग के माध्यम से प्रदर्शन में सुधार करता है।
김현이
김현이
김현이
김현이

July 23, 2024

2024-11-16 विभिन्न विषयों में रुचि: ब्लॉग की शुरुआत2024 के नवंबर 16 को लिखे गए इस ब्लॉग पोस्ट में LeetCode (लीटकोड) समस्याओं के समाधान, वीडियो निर्माण प्रक्रिया और भविष्य की योजनाओं (जैसे, elice.io पर अध्ययन) का विवरण दिया गया है।
Charles Lee
Charles Lee
Charles Lee
Charles Lee

November 16, 2024