PDA

View Full Version : سوال: تفاوت بین یک HashTable و <>Dictionary چیست



Nova19
جمعه 11 مرداد 1387, 19:27 عصر
خوب تا اونجایی که من می دونم HashTable برای ایجاد جداول با قابلیت جستجو است یعنی موقع اضافه کردن یک شی به یک HashTable نیاز به تعریف یک کلید می باشد که این کلید یکتا بوده و دو شی با کلید یکسان نمی توانند در HashTable موجود باشند. این کلاس در فضای نام System.Collection قرار دارد. اما سوالی که برام به وجود اومده اینه که در فضای نام System.Collections.Generic یک کلاس به نام <Dictionary<Tkey, Tvalue وجود دارد که همان کار HashTable را با آن می توان انجام داد. من می خواستم بدونم که این دو کلاس صرفا دو روش مختلف برای ایجاد جداول با قابلیت جستجو هستند یا اینکه از نظر ظرفیت یا اشغال حافظه با هم تفاوت دارند؟

__H2__
شنبه 12 مرداد 1387, 01:39 صبح
سلام
این دو مورد، نوعی از Collection ها هستند که میتوانید مدل های مختلف دیگری با نوع متغیر و الگوریتم های متفاوت را هم باز بیابید.
کلاس Dictionary مورد نظر شما، چون generic است، میتواند تیپ کلید و دیتایش تغییر کند و بسته به نیاز ما ست شود.

کلاس HashTable یک مجموعه عمومی است که با Object کار میکند و برای نگه داری شی های اشاره گری حجیم بسیار مناسب است، و به خاطر الوریتم خاصی که دارد، سرعت یافتن آیتم مورد نظرش در این شرایط بیشتر و بهینه است، مثلاً نگه داری مجموعه ای از کنترلرهای فرم.