2013-09-04 9 views
5

मैंने एक हैश मैप बनाया जिसमें Student कुंजी और स्ट्रिंग मान के रूप में है।हैशकोड को ओवरराइड करना और हैशमैप के लिए कुंजी की विधि के बराबर क्यों आवश्यक है?

अब हर जगह मैंने पढ़ा है equals और hashcode विधि को ओवरराइड करना आवश्यक है यदि हैशपैप के लिए कुंजी के रूप में उपयोग करना है।

लेकिन मैंने इसे ओवरराइड नहीं किया। और हैशपैप में एकाधिक कुंजी मान जोड़े डालें। मैं इसे वापस लाने में भी सक्षम हूं।

तो यह आवश्यक क्यों है?

+0

आप इन ओवरराइड करने के लिए नहीं है, लेकिन वर्ग आप जैसे का उपयोग 'स्ट्रिंग' को इन्हें ओवरराइड करना है और यह पहले से ही ऐसा करता है। यदि आप अपनी खुद की कुंजी कक्षा बनाते हैं तो आपको केवल ऐसा करने की आवश्यकता होती है। बीटीडब्ल्यू अधिकांश आईडीई इन्हें आपके लिए उत्पन्न कर सकते हैं (इसलिए आपको उन्हें स्वयं लिखने की आवश्यकता नहीं है) –

+1

उस अन्य प्रश्न के उत्तर में से कोई भी विशेष रूप से इस पते को संबोधित नहीं करता है; क्योंकि यह एक डुप्लिकेट नहीं है। ग़लत बंद करने को पूर्ववत करने के लिए कृपया इसे फिर से खोलने के लिए मतदान में शामिल हों। –

+0

@tDavid मैंने केवल सभी उत्तरों को पढ़ने के बाद इस प्रश्न को उठाया। मुझे अपने प्रश्न का उत्तर नहीं मिला। – Raj

उत्तर

2

जब आप हैशिंग का उपयोग करने वाले संग्रहों में उपयोगी हैशिंग कुंजी के रूप में अपनी ऑब्जेक्ट्स का उपयोग करना चाहते हैं तो उन्हें आवश्यक है।

क्या आपने Student ऑब्जेक्ट्स को जोड़ने की कोशिश की है जो अर्थपूर्ण रूप से बराबर हैं? पहले समझ में significance of equals method in java

पढ़ें significance of equals and hashcode

संबंधित मुद्दे