2012-12-07 26 views
5

में टक्कर संकल्प जब हम हैश मैप में कुंजी-मूल्य जोड़ी डालते हैं तो यह हो सकता है कि दो चाबियों का हैशकोड समान हो सकता है, फिर इस स्थिति में कुंजी-मूल्य को संग्रहीत करने और पुनर्प्राप्त करने के तरीके को कैसे संभाला जाएगा।हैश मैप

अद्यतन

क्या मैं अब तक समझते हैं कि यदि दो वस्तु कुंजी तो एक ही हैश कोड है दोनों प्रमुख वस्तुओं में एक ही बाल्टी में संग्रहीत किया जाएगा और जब मैं कहता हूँ जाएगा get(key) तो मिलान hashCode साथ दो वस्तुओं से बाहर लाने के लिए कौन सा तत्व object.equals() द्वारा तय किया जाता है।

+0

http://stackoverflow.com/questions/4980757/how-do-hashtables-deal-with-collisions –

+0

http://stackoverflow.com/questions/12945894/java-hashmap-confusion-about-collision-handling -और-द-गेट-विधि –

उत्तर

9

जब आप हैशपैप से कुछ ऑब्जेक्ट पुनर्प्राप्त करना चाहते हैं और उसी हैशकोड के साथ कई ऑब्जेक्ट मौजूद हैं, तो जावा सही ऑब्जेक्ट को निर्धारित करने के लिए equals() पर कॉल करेगा।

यही कारण है कि hashCode() ओवरराइड करते समय equals() ओवरराइड करना बहुत महत्वपूर्ण है।

+0

पुनर्प्राप्ति –

+0

के बारे में अच्छा बिंदु सरल और स्पष्ट उत्तर के लिए धन्यवाद लेकिन मुझे अभी भी भ्रम है, तो क्या आप कृपया मेरे प्रश्न –

+0

के अपडेट पर टिप्पणी कर सकते हैं हाँ, यह सही है। हम बाल्टी में चाबियों की सूची में पुन: प्रयास करेंगे और हमारी कुंजी पर 'बराबर()' को कॉल करेंगे जब तक कि हम एक मैच नहीं पाते हैं। –

3

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

hashCode() कई टकरावों के साथ, या बहुत कम बाल्टी वाले हैश मैप, कुछ लिंक्ड सूचियां लंबे समय तक बना सकते हैं। अच्छा प्रदर्शन शॉर्ट लिंक्ड सूचियों पर निर्भर करता है, क्योंकि एक लुकअप में अंतिम चरण लिंक की गई सूचियों में से एक का रैखिक स्कैन है।

मैं पिछले जवाब से सहमत हूं कि एक मैच equals() और hashCode() दोनों पर निर्भर करता है।

+0

+1 "संभव हैशकोड परिणामों की तुलना में कम बाल्टी हैं, इसलिए एकाधिक हैश कोड उसी बाल्टी में मैप किए जाते हैं, न कि केवल हैश कोड के साथ कुंजी" – Atul

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