वास्तव में, आज HashMap implentations वास्तव में सरणियों के बने होते हैं में से कुछ आप प्रस्ताव के रूप में। मुझे स्केच यह कैसे काम करता है:
हैश समारोह एक हैश समारोह पहली सरणी (सरणी कश्मीर) के लिए एक सूचकांक में अपनी चाबी बदल देती है। एक हैश फ़ंक्शन जैसे एमडी 5 या एक सरल, आमतौर पर मॉड्यूल ऑपरेटर समेत, इसका उपयोग इस के लिए किया जा सकता है।
बाल्टी एक साधारण सरणी आधारित हैशमैप कार्यान्वयन बाधाओं का सामना करने के लिए बाल्टी का उपयोग कर सकता है। प्रत्येक तत्व ('बाल्टी') सरणी कश्मीर में जोड़े की ही एक सरणी (सरणी पी) शामिल हैं। जोड़ते या एक तत्व के लिए क्वेरी, हैश फंक्शन जो आपकी वांछित सरणी पी फिर आप पी में तत्वों से अधिक पुनरावृति जब तक आप मिलान कुंजी मिल जाए, या आप एक नए तत्व आवंटित कश्मीर में सही बाल्टी, करने के लिए आप अंक हैश का उपयोग कर बाल्टी के लिए पी
की
मैपिंग कुंजी अंत आप यह सुनिश्चित करें कि बकेट की संख्या (यानी कश्मीर का आकार) 2 की एक शक्ति है बनाना चाहिए, मान लें कि 2^ख करते हैं। कुछ कुंजी के लिए सही बाल्टी इंडेक्स खोजने के लिए, हैश (कुंजी) की गणना करें, लेकिन केवल पहले बी बिट्स रखें। एक पूर्णांक में डालने पर यह आपकी अनुक्रमणिका है।
rescaling एक कुंजी के हैश गणना की जा रही है और सही बाल्टी खोजने बहुत जल्दी है। लेकिन एक बार बाल्टी भरने के बाद, आपको सही होने से पहले अधिक से अधिक वस्तुओं को फिर से शुरू करना होगा। तो यह काफी बाल्टी ठीक से वस्तुओं वितरित करने के लिए महत्वपूर्ण है, या अपने HashMap धीमी गति से हो जाएगा।
क्योंकि आप आम तौर पर नहीं जानता कि कितना वस्तुओं आप पहले से HashMap में संग्रहीत करना चाहते हैं, यह गतिशील रूप से हो जाना या नक्शे हटना वांछनीय है। आप संग्रहीत वस्तुओं की संख्या की गणना करने में कर सकते हैं और एक बार यह एक निश्चित सीमा से अधिक हो गया है आप पूरी संरचना, लेकिन सरणी लालकृष्ण लिए एक बड़ा या छोटा आकार के साथ इस बार पुन:इस तरह के के कुछ बाल्टी जो बहुत पूर्ण थे अब उनके तत्व कई बाल्टी के बीच विभाजित होंगे, ताकि प्रदर्शन बेहतर होगा।
वैकल्पिक तुम भी एक सरणी के-सरणियों के बजाय एक दो आयामी सरणी का उपयोग कर सकते हैं, या आप एक लिंक्ड सूची के लिए सरणी पी का आदान-प्रदान कर सकते हैं। इसके अलावा, संग्रहित ऑब्जेक्ट्स की कुल गिनती को रखने के बजाय, आप बस एक ही बाल्टी में से किसी एक कॉन्फ़िगर किए गए नंबर से अधिक होने के बाद हैशैप को फिर से बनाना (यानी पुनर्विक्रय) करना चुन सकते हैं।
Hash table Wikipedia entry में आप जो पूछ रहे हैं उसका एक भिन्नता 'सरणी हैश तालिका' के रूप में वर्णित है।
कोड कोड नमूने के लिए, here देखें।
उम्मीद है कि इससे मदद मिलती है।
आप थोड़ा और अधिक सटीक हो सकता है? आप वास्तव में क्या हासिल करना चाहते हैं? क्या आप एक विशिष्ट भाषा को लक्षित कर रहे हैं या नहीं? – romaintaz
@romaintaz कृपया स्पष्टीकरण – locoboy