जावा में हैशमैप कुंजी-मूल्य को कुशलतापूर्वक संग्रहीत करने और पुनर्प्राप्त करने के लिए हैशकोड() और बराबर() विधियों के संयोजन का उपयोग करता है जोड़े. नई कुंजी-मूल्य जोड़ी जोड़ते समय, कुंजी की हैशकोड() विधि की गणना पहले उस हैश बकेट को निर्धारित करने के लिए की जाती है जिसमें प्रविष्टि रखी जाएगी। इसके बाद चयनित बकेट के भीतर डुप्लिकेट कुंजियों की जांच करने के लिए बराबर () विधि का उपयोग किया जाता है। बराबर माना जाएगा. जब लाइन // सार्वजनिक int हैशकोड() {वापसी 9; } टिप्पणी नहीं की गई है, सभी ToDos ऑब्जेक्ट, उनके दिन के क्षेत्र की परवाह किए बिना, समान हैशकोड() मान वापस करने के लिए मजबूर हैं। परिणामस्वरूप, सभी ToDos ऑब्जेक्ट को एक ही हैश बकेट में मैप किया जाता है, भले ही उनका दिन फ़ील्ड कुछ भी हो। फ़ील्ड्स (t1, t2, t3) को उनके अलग-अलग हैशकोड() मानों के कारण अलग-अलग हैश बकेट में रखा जाता है। नतीजतन, मैप.साइज() सटीक रूप से तीन की गिनती लौटाता है। दो की गिनती. ऐसा इसलिए है क्योंकि HashMap सभी ToDos ऑब्जेक्ट को "तार्किक रूप से समतुल्य" मानता है क्योंकि वे समान hashCode() मान लौटाते हैं।
संक्षेप में,hashCode() और बराबर() विधियों का उपयोग HashMap के कुशल संचालन के लिए महत्वपूर्ण है। केवल हैशकोड() विधि को ओवरराइड करके, यह सुनिश्चित करना आवश्यक है कि तार्किक रूप से समतुल्य कुंजियाँ लगातार हैशकोड() मान उत्पन्न करती हैं। तार्किक तुल्यता निर्धारित करने के लिए आवश्यक तुलनाओं की बढ़ती संख्या के कारण केवल बराबर () विधि को ओवरराइड करने से प्रदर्शन संबंधी समस्याएं हो सकती हैं। हैशकोड() के माध्यम से कुशल हैशिंग के बीच सही संतुलन बनाना और बराबर() के माध्यम से ऑब्जेक्ट समानता सुनिश्चित करना इष्टतम हैशमैप उपयोग की कुंजी है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3