2012-04-16 12 views
20

मैं अपने कोड में शब्दकोश का उपयोग करता हूं लेकिन मेरे सहयोगी हैशटेबल का उपयोग करते हैं। एमएसडीएन का कहना है कि वे कुंजी वैल्यू जोड़ी & हैशटेबल और डिक्शनरी के उदाहरण एमएसडीएन पर समान हैं।अंतर बी/डब्ल्यू हैशटेबल, डिक्शनरी और कीवैल्यूपेयर क्या अंतर हैं?

फिर वे एक दूसरे से कितने अलग हैं & उनमें से सबसे अच्छा है या वे अंतर अवसरों के लिए उपयुक्त हैं?

+0

संभव डुप्लिकेट [क्यों शब्दकोश सी # में hashtable से अधिक पसंद है?] (Http://stackoverflow.com/questions/301371/why-dictionary-is-preferred-over-hashtable-in-c) – Gabe

उत्तर

20

Hashtable एक untyped सहयोगी कंटेनर है जो DictionaryEntry कक्षा का उपयोग अपने कुंजी-मूल्य जोड़े के माध्यम से गणना के परिणाम लौटने के लिए करता है।

Dictionary<K,T>Hashtable का सामान्य प्रतिस्थापन है जिसे सी # 2.0 में पेश किया गया था। यह KeyValuePair<K,T> जेनेरिक ऑब्जेक्ट्स का उपयोग अपने कुंजी-मूल्य जोड़े का प्रतिनिधित्व करने के लिए करता है।

एकमात्र ऐसा स्थान जहां आपको Hashtable देखना चाहिए, ये दिन विरासत कोड है जो जेनेरिक से पहले .NET 1.1 पर चलाना चाहिए। इसे संगतता कारणों के लिए चारों ओर रखा गया है, लेकिन जब भी आप कर सकते हैं Dictionary<K,T> पसंद करना चाहिए।

16

KeyValuePairHashtable (या Dictionary) में संग्रहीत डेटा की इकाई है। वे एक-दूसरे के बराबर नहीं हैं।

एक महत्वपूर्ण मूल्य जोड़ी में एक एकल कुंजी और एकल मान होता है। एक शब्दकोश या हैशटेबल में उनके संबंधित मानों के लिए कई कुंजियों का मैपिंग होता है।

KeyValuePair खासकर जब एक एक की पहचान रास्ता (उदाहरण के लिए 1234 => "डेविड स्मिथ") में अन्य से संबंधित है जब आप एक इकाई के रूप में जानकारी की दो संबंधित टुकड़े संग्रहीत करना चाहते हैं उपयोगी है,। जब आप एक शब्दकोश को फिर से शुरू करते हैं तो वे भी वापस आते हैं। .NET 4.0 में, ये वास्तव में केवल एक शब्दकोश में आंतरिक रूप से उपयोग के लिए हैं- सामान्य उद्देश्य के उपयोग के लिए ट्यूपल क्लास पेश किया गया है।

Hashtable और Dictionary के बीच अंतर यह है कि Hashtable एक सामान्य वर्ग नहीं है दोनों यह कुंजी और मूल्यों प्रकार Object के हैं है। Dictionary सामान्य है, और आमतौर पर किसी भी नए विकास में Hashtable के पक्ष में उपयोग किया जाना चाहिए।

5

एक शब्दकोश एक टाइप किया गया हैशटेबल है। यदि आप कुंजी और मान के डेटा प्रकार को जानते हैं, तो प्रदर्शन कारणों (कास्टिंग से बचें) के लिए एक शब्दकोश का उपयोग करें।

0

एक बड़ा अंतर यह है कि Hashtable थ्रेड-सुरक्षित है, जबकि Dictionary नहीं है।

documentation का कहना है:

Hashtable कई पाठक धागे और एक भी लेखन धागा द्वारा उपयोग के लिए सुरक्षित थ्रेड है। यह थ्रेड थ्रेड उपयोग के लिए सुरक्षित है जब केवल एक धागे लिखने (अपडेट) ऑपरेशन करता है, जो लॉक-फ्री रीड के लिए अनुमति देता है बशर्ते लेखकों को Hashtable पर क्रमबद्ध किया गया हो। कई लेखकों का समर्थन करने के लिए Hashtable पर सभी संचालन Synchronized विधि द्वारा लौटाए गए रैपर के माध्यम से किया जाना चाहिए, बशर्ते कि हैशटेबल ऑब्जेक्ट को पढ़ने वाले कोई धागे न हों।

कंट्रास्ट इस Dictionary documentation साथ:

एक Dictionary(Of TKey, TValue) कई पाठकों समवर्ती रूप में लंबे समय के रूप में संग्रह संशोधित नहीं है समर्थन कर सकते हैं,।

की
+0

Isn यह सिर्फ http://stackoverflow.com/questions/876656/difference-between-dictionary-and-hashtable का एक "रिहाश" नहीं है ?? – sisdog

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