PDA

View Full Version : سوال: استفاده از hashtable در سی شارپ



InvBoy01001
دوشنبه 27 دی 1395, 11:05 صبح
من برای اولین بار میخوام از hash table استفاده کنم
میخوام بدونم که :
1) hash map چیه و چه کاربردی داره؟

2) وقتی من یک آرایه را به hash table اضافه کردم میتونم hash table به عنوان یه فایل جدید ذخیره کنم و دوباره اون آرایه را بازگردانی کنم (از خود فایل ذخیره شده) ؟

3) اگه آرایه من دارای 10 تا آیتم باشه که مجموعه این آیتم ها 50 بیت حافظه بگیره بعد از این که hash table به عنوان یه فایل ذخیره کردم ، اون فایل جدید چقدر حافظه استفاده میکنه؟

4) dictionary چیست و چه مواقعی بهتر ازش استفاده کنم؟

مهرداد صفا
سه شنبه 28 دی 1395, 12:51 عصر
سلام.

1) hash map چیه و چه کاربردی داره؟

در .Net کلاسی با این نام سراغ ندارم ولی معادلش همون Hashtable و Dictionary هستند که مقادیر رو به صورت KeyValuePaire ذخیره می کنند و برای افزایش سرعت در دسترسی به Value ها مقادیر Key رو به صورت Hash نگهداری می کنند.


2) وقتی من یک آرایه را به hash table اضافه کردم میتونم hash table به عنوان یه فایل جدید ذخیره کنم و دوباره اون آرایه را بازگردانی کنم (از خود فایل ذخیره شده) ؟
Hashtable که Serializable هست ولی بستگی به این داره که انواعی که به عنوان Value استفاده می کنید قابلیت Serialize شدن رو داشته باشند.


3) اگه آرایه من دارای 10 تا آیتم باشه که مجموعه این آیتم ها 50 بیت حافظه بگیره بعد از این که hash table به عنوان یه فایل ذخیره کردم ، اون فایل جدید چقدر حافظه استفاده میکنه؟
50 بیت که امکانپذیر نیست ولی اگر منظورتون بایت هست، بستگی به نوع Serialization داره که استفاده می کنید. مثلا XML Serialization نسبت به Binary Serialization ممکنه فضای بیشتری نیاز داشته باشه و البته به خود نوعی که امکان Serialize شدن رو فراهم میکنه هم خیلی بستگی داره. اما در کل علاوه بر Data ممکنه اطلاعاتی هم در مورد Type ذخیره بشه که ممکنه قدری حجم اطلاعات ذخیره شده بالاتر از تصور شما باشه.


4) dictionary چیست و چه مواقعی بهتر ازش استفاده کنم؟
در واقع همون Hashtable هست با امکان Strong typing که به دلیل اینکه نوع Key و Value از قبل مشخص میشند دیگه نیازی به Type Casting هنگام دسترسی به مقادیر نیست و از طرفی هم محدودیتی رو براتون به همراه داره که نمی تونید در حالت عادی از اشیائی با انواع مختلف رو در Key یا Value قرار بدید.