मैंने अक्सर लोगों को हैशिंग और हैश मैप्स और हैश टेबल के बारे में बात करते हुए सुना है। मैं जानना चाहता था कि वे क्या हैं और आप उनका सबसे अच्छा उपयोग कहां कर सकते हैं।प्रोग्रामिंग में हैश मैप क्या है और इसका उपयोग कहां किया जा सकता है
उत्तर
सबसे पहले आप शायद पढ़ा shoud:
आमतौर पर वे अधिक
आप पा सकते हैं यह उपयोगी खोज पेड़ आदि से आइटम पुनर्प्राप्त करने में कुशल हैं यह article।
जब आप सूचियों का उपयोग करते हैं और आप एक विशेष आइटम की तलाश में हैं तो आपको सामान्य सूची में सामान्य रूप से पुन: प्रयास करना होगा। जब आपके पास बड़ी सूचियां हों तो यह बहुत महंगा है।
एक हैशटेबल बहुत तेज़ हो सकता है, सर्वोत्तम परिस्थितियों में आपको वह वस्तु मिल जाएगी जो आप केवल एक एक्सेस के साथ देख रहे हैं।
यह कैसे काम कर रहा है? एक शब्दकोश की तरह ... जब आप एक शब्दकोश में "हैशटेबल" शब्द की तलाश में हैं, तो आप 'ए' के तहत पहले शब्द से शुरू नहीं कर रहे हैं। लेकिन आप सीधे 'एच' पत्र पर सीधे जाते हैं। फिर 'हा', 'है' और इतने पर, जब तक आपको अपना शब्द नहीं मिला। आप अपनी खोज तेज करने के लिए अपने शब्दकोश के भीतर एक इंडेक्स का उपयोग कर रहे हैं।
एक हैशटेबल मूल रूप से वही करता है। प्रत्येक आइटम को एक अद्वितीय अनुक्रमणिका मिलती है (तथाकथित hash
)। आप लुकअप के लिए इस हैश का उपयोग करते हैं। हैश एक सामान्य लिंक्ड सूची में एक सूचकांक हो सकता है। उदाहरण के लिए आपका हैश 2130 जैसा नंबर हो सकता है जिसका अर्थ है कि आपको अपनी सूची में 2130 स्थिति देखना चाहिए। एक सामान्य सूची में एक ज्ञात सूचकांक पर एक लुकअप बहुत आसान और तेज़ है।
पूरे दृष्टिकोण की समस्या तथाकथित hash function
है जो प्रत्येक आइटम को इस सूचकांक को असाइन करती है। जब आप किसी आइटम की तलाश में हैं तो आपको पहले से ही इंडेक्स की गणना करने में सक्षम होना चाहिए। एक वास्तविक शब्दकोश की तरह, जहां आप देखते हैं कि 'हैशटेबल' शब्द 'एच' से शुरू होता है और इसलिए आप अनुमानित स्थिति जानते हैं।
एक अच्छा हैश फ़ंक्शन हैशकोड प्रदान करता है जो सभी संभावित हैशकोड की जगह पर समान रूप से विघटित होते हैं। और निश्चित रूप से यह collisions
से बचने की कोशिश करता है। एक टकराव तब होता है जब दो अलग-अलग आइटम एक ही हैशकोड प्राप्त करते हैं।
उदाहरण के लिए सी # में प्रत्येक ऑब्जेक्ट में GetHashcode()
विधि है जो इसके लिए हैश प्रदान करता है (आवश्यक नहीं है)। इसका उपयोग आपके शब्दकोश में लुकअप और सॉर्टिंग के लिए किया जा सकता है।
जब आप हैशटेबल्स का उपयोग शुरू करते हैं तो आपको हमेशा ध्यान रखना चाहिए कि आप टकराव को सही तरीके से संभालते हैं। यह बड़े हैशटेबल्स में काफी आसानी से हो सकता है कि दो ऑब्जेक्ट्स को एक ही हैश मिला है (शायद गेटहाशकोड() का आपका अधिभार दोषपूर्ण है, शायद कुछ और हुआ)।
असल में, एक हैश मैप आपको पहचानकर्ताओं के साथ आइटम स्टोर करने की अनुमति देता है। वे एक टेबल प्रारूप में संग्रहित होते हैं जिसमें पहचानकर्ता को हैशिंग एल्गोरिदम का उपयोग करके धोया जाता है। http://www.relisoft.com/book/lang/pointer/8hash.html
आशा है कि यह मदद करता है,
क्रिस
हैशिंग (गैरक्रिप्टोग्राफिक भावना में) इनपुट लेने के लिए एक कंबल शब्द है और उसके बाद इसे पहचानने के लिए आउटपुट का उत्पादन होता है। हैश का एक तुच्छ उदाहरण एक स्ट्रिंग के पत्र का योग है, यानी जोड़ रहा है:
f(abc) = 6
ध्यान दें कि यह तुच्छ हैश योजना तार एबीसी, बीसीए, ae, आदि एक के बीच एक टकराव पैदा करेगा प्रभावी हैश योजना स्वाभाविक रूप से प्रत्येक स्ट्रिंग के लिए अलग-अलग मान उत्पन्न करेगी।
हैशमैप्स और हैशटेबल्स डेटास्ट्रक्चर (जैसे सरणी और सूचियां) हैं, जो डेटा स्टोर करने के लिए हैशिंग का उपयोग करते हैं। हैशटेबल में, एक हैश उत्पन्न होता है (या तो प्रदान की गई कुंजी से, या ऑब्जेक्ट से) जो यह निर्धारित करता है कि ऑब्जेक्ट को संग्रहीत करने के लिए तालिका में कहां रखा जाता है। इसका मतलब है कि जब तक हैशटेबल का उपयोगकर्ता कुंजी से अवगत है, तब तक वस्तु को पुनर्प्राप्त करना बेहद तेज़ है।
एक सूची में, तुलना में, आपको अपनी मांग की वस्तु को खोजने के लिए सूची में से किसी एक तरीके से खोजना होगा। यह हैशटेबल के पीछे की ओर भी प्रतिनिधित्व करता है, जो कि कुंजी को जानने के बिना किसी ऑब्जेक्ट को ढूंढना बहुत जटिल है, क्योंकि तालिका में ऑब्जेक्ट को संग्रहीत किया जाता है, उसके मूल्य पर कोई प्रासंगिकता नहीं होती है और न ही जब इसे इनपुट किया जाता है।
हैशमैप्स हैशटैबल्स के समान हैं, लेकिन प्रत्येक ऑब्जेक्ट का केवल एक उदाहरण इसमें संग्रहीत है (इसलिए कोई भी कुंजी प्रदान करने की आवश्यकता नहीं है, ऑब्जेक्ट स्वयं ही कुंजी है)।
यह निश्चित रूप से एक बहुत ही सरल स्पष्टीकरण है, इसलिए मेरा सुझाव है कि आप इस बिंदु से गहराई से पढ़ लें। मुझे आशा है कि मैंने कोई मूर्खतापूर्ण गलती नहीं की है। =)
हैशमैप का उपयोग मुख्य मूल्य जोड़े में डेटा संग्रहीत करने के लिए किया जाता है। हम किसी एप्लिकेशन में ऑब्जेक्ट्स को संग्रहीत करने के लिए हैशैप का उपयोग कर सकते हैं और मूल्यों को संग्रहीत करने, अपडेट करने, हटाने के लिए उसी एप्लिकेशन में इसका उपयोग कर सकते हैं। हैशमैप कुंजी और मान एक बाल्टी में एक विशिष्ट प्रविष्टि में संग्रहीत होते हैं, यह प्रविष्टि स्थान हैशकोड फ़ंक्शन का उपयोग करके निर्धारित किया जाता है। यह हैशकोड फ़ंक्शन हैश निर्धारित करता है जहां मान संग्रहीत किया जाता है। हैशैप कार्यों का विस्तृत विवरण इस वीडियो में वर्णित है: https://youtu.be/iqYC1odZSNo
- 1. लघु सर्किटिंग क्या है और जावा में प्रोग्रामिंग करते समय इसका उपयोग कैसे किया जाता है?
- 2. जावा हैश मैप कार्यान्वयन में प्रवेश वर्ग में 'अगला' सदस्य है। इसका उपयोग क्या है
- 3. फ़ाइल छेद क्या है और इसका उपयोग कैसे किया जा सकता है?
- 4. सी ++ प्रोग्रामिंग कास्टिंग: क्या यह किया जा सकता है?
- 5. डीएसएल क्या है और मुझे इसका उपयोग कहां करना चाहिए?
- 6. हैश को स्ट्रिंग में परिवर्तित नहीं किया जा सकता है?
- 7. Google Analytics async डिज़ाइन पैटर्न का नाम क्या है और इसका उपयोग कहां किया जाता है?
- 8. आईफोन प्रोग्रामिंग में इसका क्या अर्थ है?
- 9. गेटर्स बराबर और हैशकोड में उपयोग किया जा सकता है?
- 10. क्या WampServer उत्पादन में सफलतापूर्वक उपयोग किया जा सकता है?
- 11. Cpython में क्या किया जा सकता है जो IronPython में नहीं किया जा सकता है?
- 12. हैश मैप
- 13. जेएनडीआई क्या है? इसका मूल उपयोग क्या है ..? इसका उपयोग कब किया जाता है?
- 14. प्रक्रिया को एक्सेस नहीं किया जा सकता है क्योंकि इसका उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है
- 15. कैशड्रॉवसेट: क्या इसका अभी भी परिणामसेट डेटा को पकड़ने के लिए उपयोग किया जा सकता है?
- 16. एंड्रॉइड में SharedUserId क्या है, और इसका उपयोग कैसे किया जाता है?
- 17. सी # में var - सदस्य चर के रूप में इसका उपयोग क्यों नहीं किया जा सकता है?
- 18. हैश मैप
- 19. क्या कोई म्यूटेक्स को समझा सकता है और इसका उपयोग कैसे किया जाता है?
- 20. Ext.Component.initialConfig क्या है, यह क्या करता है, और किस संदर्भ में इसका उपयोग किया जाता है?
- 21. तत्काल क्या किया जा सकता है?
- 22. हैश मैप और ट्रीमैप के बीच क्या अंतर है?
- 23. हैश मैप
- 24. हैश मैप
- 25. क्या Log4JLogger का मूल कारण पाया जा सकता है या उपयोग नहीं किया जा सकता है?
- 26. फ़ंक्शन बॉडी में इसका उल्लेख किए बिना फ़ंक्शन पैरामीटर का उपयोग कैसे किया जा सकता है?
- 27. क्या एचटीटीपीएस में कुकी बनाई जा सकती है, और अगर सुरक्षित है तो HTTP में उपयोग किया जा सकता है?
- 28. LiteralControl क्या है? इसका उपयोग क्यों किया जाता है?
- 29. एसवीजी फाइलें, क्या उनका उपयोग किया जा सकता है?
- 30. कॉन्ट्रैक्ट क्लास क्या है और इसका उपयोग
एक अच्छी तरह से समझाया गया जवाब –
आपका क्या मतलब है "आपको (टकराव) सही ढंग से संभालना चाहिए"? जैसा कि मुझे पता है, हमें केवल अच्छे हैश फ़ंक्शंस (बेहतर प्रदर्शन के लिए) लिखकर टकराव को कम करने की कोशिश करनी चाहिए। लेकिन, "टकराव को संभालने" की कोई ज़रूरत नहीं है। यदि हैश टकराता है, तो यह बराबर तुलना करके जांच के अगले स्तर का सहारा लेगा। – Teddy
@ टेडी: हैश फ़ंक्शन बस हैशिंग करें। कोई "अगला स्तर" नहीं है। "टकराव की देखभाल" के द्वारा मेरा यही मतलब था। जब एक से अधिक मैच होते हैं, तो आपको उदा। बराबर तुलना – tanascius