دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • مرداد

جلسه ۳۳ : مجموعه های Hashtable در #C

  • دسته‌بندی‌ها :
جلسه ۳۳ : مجموعه های Hashtable در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبل به معرفی نوعی از مجموعه های غیر عمومی به نام صف (Queue) در زبان #C پرداختیم ، در این بخش قصد داریم شما را با مجموعه های Hashtable در #C آشنا کنیم.

      #C شامل مجموعه Hashtable در فضای نام System.Collections است، که شبیه به مجموعه عمومی دیکشنری است. مجموعه Hashtable عناصر را به صورت جفت های مقدار و کلید ذخیره می کند. کد به صورت هش و بهینه سازی شده ذخیره می شود. این نوع مجموعه جستجوها را با محاسبه کد هش شده هر کلیدانجام میدهد.

       

      پراپرتی ها و متدهای مهم :

      توضیحاتپراپرتی
      تعداد کل عناصر (کلید / مقدار) در Hashtable را برمی گرداند.Count
      مقدار بولین را بر میگرداند که نشان می دهد آیا Hashtable فقط خواندنی است یا خیر.IsReadOnly
      مقدار مربوط به عنصر مشخص شده را برمی گرداند و یا آن را دریافت می کند.Item
      مجموعه ای از کلید های موجود در Hashtable را برمیگرداند.Keys
      مجموعه ای از مقادیر موجود در Hashtable را برمیگرداند.Values

       

      توضیحاتمتد
      یک آیتم با یک کلید و مقدار را به Hashtable اضافه می کند.Add
      آیتم را با کلید مشخص شده از Hashtable حذف می کند.Remove
      تمام عناصر موجود در Hashtable را حذف می کند.Clear
      چک میکند که آیا کلید مورد نظر در Hashtable  موجود است یا خیر.Contains
      چک میکند که آیا کلید مورد نظر در Hashtable  موجود است یا خیر.ContainsKey
      چک میکند که آیا مقدار مورد نظر در Hashtable  موجود است یا خیر.ContainsValue
      کد هش را برای کلید مشخص شده بازمی گرداند.GetHash

       

      متد Add :

      متد Add یک مورد با کلید و مقدار را به Hashtable اضافه می کند. کلید و مقدار می تواند از هر نوع داده باشند. کلید نمی تواند Null باشد در حالی که مقدار می تواند Null باشد.

      ساختار کلی :

      void Add(object key, object value)

      مثال : 

      همچنین می توانید کلید و مقدار را در هنگام مقداردهی اولیه تعیین کنید:

      مثال : 

      Hashtable می تواند تمام عناصر دیکشنری را داشته باشد ، مانند مثال زیر :

      مثال : 

      توجه : اگر کلیدی را که در Hashtable وجود دارد دوباره اضافه کنید متد Add یک استثناء را برمی گرداند. بنابراین همیشه قبل از اضافه کردن عنصر به Hashtable، کلید مورد نظر را با استفاده از متد Contains یا ContainsKey بررسی کنید.

       

      دسترسی به عناصر Hashtable :

      می توانید به مقدار یک کلید موجود در Hashtable با استفاده از شماره اندیس و یا کلید آن دسترسی داشته باشید.

      مثال : 

      خروجی :

      مثال : 

      Hashtable یک مجموعه غیر عمومی است و میتواند یک کلید و یک مقدار از هر نوع داده داشته باشد. ولی مقادیر باید از نوع داده مناسب استفاده شوند در غیر این صورت کامپایلر خطا برمی گرداند .

      برای دسترسی به عناصر Hashtable در حلقه ها باید از نوع داده  DictionaryEntry استفاده کنید. بنابراین هر عنصر در Hashtable را به DictionaryEntry منتقل می کنید. همانطور که در زیر نشان داده شده است ،از دستور foreach برای تکرار Hashtable استفاده میکنیم:

      مثال : 

      خروجی :

      مثال : 

      Hashtable دارای پراپرتی های Keys و Values است که توسط آنها می توانید کلیه کلیدها و مقادیر را به ترتیب دریافت کنید.

      مثال : 

      مثال : 

       

      متد Remove :

      توسط این متد میتوانید عنصری را براساس کلید آن حذف کنید.

      ساختار کلی :

      void Remove(object key)

      مثال : 

       

      متدهای Contains و ContainsKey و ContainsValue :

      متد های Contains و ContainsKey بررسی میکنند که آیا کلید مشخص شده در مجموعه Hashtable وجود دارد یا خیر. همچنین ContainsValue بررسی می کند که آیا مقدار مشخص شده در Hashtable وجود دارد یا خیر.

      ساختار کلی :

      مثال : 

      مثال : 

       

      متد clear :

      متد Clear تمام عناصر بهمراه کلید و مقدارشان را از Hashtable حذف می کند.

      ساختار کلی :

      void Clear()

      مثال : 

      خروجی :

      مثال : 

       

      چند نکته مهم جهت به خاطر سپردن :

      1. مجموعه های Hashtable جفت های کلیدی و مقدار هر نوع داده ای را دریافت میکنند و Key همیشه باید منحصر به فرد باشد.
      2. کلید Hashtable نمی تواند Null باشد در حالی که مقدار آن می تواند Null باشد.
      3. Hashtable یک عنصر را خودش را با مقایسه کد هش شده کلید آن عنصر بازیابی می کند. بنابراین سرعت عملکرد آن در مقایسه با مجموعه ی دیکشنری بسیار پایین تر است.
      4. Hashtable از Provider پیش فرض hashcode استفاده میکند که در  object.GetHashCode وجود دارد . شما همچنین می توانید از یک Provider خصوصی hashcode استفاده کنید.
      5. برای استفاده از Hashtable در حلقه foreach از نوع داده DictionaryEntry استفاده کنید.

       

      در این قسمت از آموزش با مجموعه Hashtable در زبان #C آشنا شدید ، در بخش بعدی قصد داریم شما را با Indexer ها در زبان #C آشنا کنیم.

      QR:  جلسه ۳۳ : مجموعه های Hashtable در #C
      به اشتراک بگذارید