यह कई चीजों पर निर्भर करता है। यह आमतौर पर ओ (1) है, जो एक सभ्य हैश है जो स्वयं स्थिर समय है ... लेकिन आपके पास हैश हो सकता है जो गणना करने के लिए लंबा समय लेता है, और यदि हैश मानचित्र में कई आइटम हैं जो वापस लौटाते हैं एक ही हैश कोड, get
उन पर से प्रत्येक पर एक मैच खोजने के लिए equals
पर कॉल करना होगा।
सबसे बुरे मामले में, HashMap
में एक ही हैश बाल्टी में सभी प्रविष्टियों के माध्यम से चलने के कारण ओ (एन) लुकअप है (उदाहरण के लिए यदि उनके पास एक ही हैश कोड है)। सौभाग्य से, मेरे अनुभव में, वास्तविक जीवन में सबसे खराब मामला परिदृश्य अक्सर नहीं आता है। तो नहीं, ओ (1) निश्चित रूप से गारंटी नहीं है - लेकिन यह आमतौर पर आपको क्या लगता है जब एल्गोरिदम और डेटा संरचनाओं का उपयोग करने पर विचार करना चाहिए।
जेडीके 8, HashMap
में tweaked किया गया है ताकि अगर चाबियों की ऑर्डर करने के लिए तुलना की जा सके, तो किसी भी घनी आबादी वाली बाल्टी को पेड़ के रूप में लागू किया जाता है, ताकि अगर एक ही हैश कोड के साथ बहुत सारी प्रविष्टियां हों, जटिलता ओ है (लॉग एन)। इससे समस्याएं पैदा हो सकती हैं यदि आपके पास एक महत्वपूर्ण प्रकार है जहां समानता और ऑर्डरिंग अलग-अलग हैं।
और हाँ, यदि आपके पास हैश मानचित्र के लिए पर्याप्त स्मृति नहीं है, तो आप परेशानी में होंगे ... लेकिन यह आपके द्वारा उपयोग की जाने वाली डेटा संरचना के सत्य होने जा रहा है।
स्रोत
2010-12-29 11:25:06
आप परिशोधित जटिलता की अवधारणा को देखने के लिए चाहते हो सकता है। उदाहरण यहाँ देखें: stackoverflow.com/questions/3949217/time-complexity-of-hash-table सबसे बुरे मामले जटिलता एक हैश तालिका –
सही के लिए सबसे अधिक महत्वपूर्ण उपाय नहीं है - यह _amortized_ हे (1) है - कि कभी नहीं भूल पहला भाग और आपके पास इस तरह के प्रश्न नहीं होंगे :) –