تمام سوالات سوالات بدون پاسخ سوال بپرسید

سلام.
من خیلی دوست دارم بفهمم چه موقع و چرا باید از HashTable و یا Dictionary ها استفاده کنم.خوب من در این زمینه در اینترنت جستجو هایی رو انجام دادم.خیلی ها این مسئله را بیان می کنند که Dictionary ها نکات مثبتی دارند که باعث افزایش عملکرد و کارایی برنامه می شوند.البته آنها مشکلی دارند و آن اینست که همیشه نمی توانند اشیائی که در آنها درج می شوند را به ترتیب درجشان به ما بازگردانند.این درحالی است که جداول Hash (HashTable) این کار را برای ما انجام می دهند.تا آنجایی که من فهمیدم این باعث می شود که HashTable ها در برخی از شرایط سریعتر عمل کنند.
سوال من اینجاست که در چه شرایطی یکی از این دو ممکن است بر دیگری برتری داشته باشد؟اصلا آیا یافته های من درست است؟هرکدام از این دو برای استفاده در چه وضعیت هایی مناسب هستند؟

1 پاسخ

در جواب شما باید بگم که کلاس های >System.Collections.Generic.Dictionary<tkey,tvalue> و System.Collections.Hashtable هر دو ساختار داده ای جدول hash را در خود نگهداری می کنند.البته توجه داشته باشید که هیچ یک از آنها ترتیب آیتم های ذخیره شده داخل خود را تضمین نمی کنند.در مورد کارایی آنها باید بگویم که در بیشتر اوقات عملکرد یکسانی را از خود نشان می دهند.تفاوت اصلی بین این دو در نوع حل مشکل تصادم (collision) می باشد که Dictionary برای رفع آن از زنجیرسازی (changing) استفاده می کند در حالی که hashtable از هش کردن مجدد (rehashing) بهره می برد. البته می توان گفت که در هنگام کار با2.0+ .NET استفاده از Hashtable کارایی بیشتری را نسبت به Dictionary به شما می دهد.

mostafa@:برای توضیحات بیشتر راجع به Chaning و rehashing به این مقاله سری بزن.توضیحات کاملی داده.

(16 آوریل '12, 14:15) web developer
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها