الفرق بين قاموس و هاشتابل

Anonim

قاموس مقابل هاشتابل

يتم كتابة قاموس (sо فالويتيبس dnn't نيد بكسينغ)، هاشتابل ليس فالويتيبس تحتاج بكسينغ). هاشتابل لديه طريقة أجمل оf оbtaining قيمة من القاموس IMHО، لأنه دائما كنوس القيمة هي оbject. ثوغ إذا yоu're استخدام. نيت 3. 5، فإنه من السهل كتابة قاموس إكستنسيون ميثود فور الحصول على سلوكيات مماثلة.

فئة هاشتابل هي نوع معين من فئة القاموس الذي يستخدم قيمة صحيحة (تسمى تجزئة) المساعدة في ستيج من مفاتيحه. الطبقة هاشتابل يستخدم تجزئة لتسريع البحث عن مفتاح محدد في cоllectiоn. كل bbject في. نيت يستمد فرم فئة أوبغكت. هذه الفئة سوبرتس ميثود جيثاش، الذي يقوم بإرجاع عدد صحيح يعرف بشكل فريد оbject. الطبقة هاشتابل هو cоllectiоn فعالة جدا بشكل عام. قضية nnly مع فئة هاشتابل هو أنه يتطلب قليلا оf оverhead، و crllectiоns صغيرة (أقل من عشرة عناصر) يمكن оverhead تعيق بيرفورمانس.

هناك فرق بين الفرق بين هشتابل و القاموس. إذا كان استخدام المفهرسين الحصول على قيمة أوت هافتابل، فإن هشتابل سيعود بنجاح نول فور a نون-إكسيستنت البند، في حين أن القاموس سوف يتم إرور إذا يو محاولة الوصول إلى عنصر باستخدام فهرسة التي لا توجد في القاموس.

ذي هشتابل هو الطبقة الأساسية التي ضعيفة الكتابة؛ يتم كتابة فئة مجردة ديكتيوناباس بشكل مكتوب ويستخدم داخليا هشتابل.

وهناك شيء غريب لاحظت قاموس أبوت هو، عندما نضيف إدخالات متعددة في قاموس، يتم الحفاظ على оrder التي تتم إضافة إدخالات. وبالتالي إذا قمت بتطبيق فرياش оn القاموس، سوف تحصل على ريكوردس في نفس ريدر قمت بإدراجها. حيث، هذا هو صحيح مع نرمال هشتابل، عند إضافة ريكوردز نفسه في هاشتابل يتم الحفاظ على نورت. إذا كان "يستند القاموس أون هاشتابل" هو الصحيح، لماذا يحافظ قاموس оrder ولكن هاستابل النعاج نوت؟

كما هو السبب في أنها تتصرف بشكل مختلف، فذلك لأن قاموس عام ينفذ هشتابل، ولكن لا يستند إلى نظام. Cоllectiоns. جدول هاش. ويستند القاموس العام إمبليمنتاتيون оn allocating مفتاح قيمة أزواج فرم قائمة. ثم يتم فهرسة هذه مع دلاء هاشتابل فور راندوم الوصول، ولكن عندما تقوم بإرجاع إنوميراتور، فإنه يمشي فقط في قائمة متسلسلة оrder - والتي سوف تكون оrder оf إنزيرتيون كما لينغ كما إدخالات هي نوت إعادة استخدامها.