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



  • ۲۵
  • مرداد

جلسه ۴۱ : مجموعه عمومی SortedList در #C

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

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با مجموعه عمومی List آشنا شدید . در این بخش قصد داریم مجموعه عمومی SortedList در #C و دسترسی به عناصر SortedList در سی شارپ را به شما معرفی کنیم. یک مجموعه عمومی SortedList نشان دهنده مجموعه ای از جفت های کلید-مقدار است که بر اساس کلید مرتب شده اند.

      یک مجموعه SortedList ترتیب عناصر را بر اساس کلید بصورت صعودی مرتب میکند و شامل رابطهای IDictionary  و ICollection می باشد بنابراین می توانیم به وسیله کلید یا شماره اندیس و یا هر دو به عناصر دسترسی داشته باشیم.

       

      ساختار کلی :

      SortedList<TKey,TValue>

      #C شامل دو نوع Generic SortedList و Non-generic SortedList است. Generic SortedList با علامت های <> مشخص می شود که TKey برای نوع کلید و TValue برای نوع مقدار است. در SortedList غیر عمومی نوع کلید و مقادیر را مشخص نمی کنند.

      SortedList در خود دو آرایه را نگه می دارد، یکی برای کلید ها و دیگری برای مقادیر. بنابراین هنگامی که یک جفت کلید-مقدار را به آن اضافه می کنید، جستجو باینری بر اساس کلید برای یافتن یک شماره اندیس مناسب برای ذخیره کلید و مقدار در آرایه های مربوطه انجام می شود. همچنین وقتی عناصر را از آن حذف می کنید دوباره عملیات مرتب سازی را انجام کی دهد .

      شما می توانید مجموعه عمومی SortedList را با مشخص کردن نوع کلید و مقدار به صورت زیر نشان دهید.

      مثال : 

      در مثال بالا، mySortedList کلید نوع int و مقدار نوع string را نگه می دارد.

       

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

      توضیحاتپراپرتی
      تعداد عناصری را که SortedList می تواند ذخیره کند، تنظیم کرده و یا آن برمی گرداند.Capacity
      تعداد کل عناصر موجود در SortedList را برمی گرداند.Count
      یک مقدار Boolean برمیگرداند که نشان می دهد آیا SortedList فقط خواندنی است یا خیر.IsReadOnly
      مقدار یک عنصر را با کلید مشخص شده در SortedList تنظیم کرده و یا آن را برمی گرداند.Item
      فهرست کلیدهای SortedList را برمی گرداند.Keys
      فهرست مقادیر در SortedList را برمی گرداند.Values

       

      متدهای مهم :

      توضیحاتمتد
      جفت کلید-مقدار (key-value pairs) را به SortedList اضافه می کند.Add
      عنصر را با استفاده از کلید مشخص حذف می کند.Remove
      عنصر را با استفاده از شماره اندیس مشخص حذف می کند.RemoveAt
      چک می کند که آیا کلید مشخص شده در SortedList وجود دارد یا خیر.ContainsKey
      چک می کند که آیا مقدار مشخص شده در SortedList وجود دارد یا خیر.ContainsValue
      تمام عناصر را از SortedList حذف می کند.Clear
      شماره اندیس کلید مشخص شده در آرایه SortedList را بر می گرداند.IndexOfKey
      شماره اندیس مقدار مشخص شده در آرایه SortedList را بر می گرداند.IndexOfValue
      اگر مقدار مشخص شده در فهرست کلیدهای آرایه SortedList وجود داشته باشد true را برگردانده و مقدار را با کلید مشخص شده اختصاص می دهد، و اگر وجود نداشته باشد false را برمیگرداند.TryGetValue

       

      متد Add :

      از این متد برای اضافه کردن جفت های کلید-مقدار به یک SortedList استفاده می شود . کلید نمی تواند Null باشد، اما مقدار آن می تواند Null باشد. همچنین، نوع داده کلید و مقدار باید از همان نوع مشخص شده باشند، در غیر این صورت خطای کامپایل برگشت داده می شود.

      ساختار کلی :

      void Add(TKey key, TValue value)

      مثال زیر نشان می دهد که چگونه برای اضافه کردن جفت کلید-مقدار از متد Add استفاده کنید.

      مثال : 

      هرگاه عنصری در مجموعه SortedList اضافه شود این مجموعه به صورت خودکار عناصر را دوباره مرتب می کند. بنابراین حتی اگر آنها به صورت تصادفی اضافه شوند ، دوباره به صورت صعودی مرتب خواهند شد . تصویر زیر SortedList را در نمای debug نشان می دهد.

      generic-sortedlist

      generic-sortedlist

       

      همانطور که می توانید در تصویر بالا مشاهده کنید، sortedList1 جفت های key-value را بر اساس کلید بصورت صعودی ذخیره می کند و sortedList2 عناصر را به ترتیب حروف الفبا کلیدها ذخیره می کند، حتی اگر آنها به ترتیب نباشند. sortedList3 نیز شامل نوع nullable int است ، به طوری که میتواند شامل مقدار  null به عنوان یک مقدار باشد.

       

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

      می توان از طریق شماره اندیس یا کلید به عناصر SortedList دسترسی پیدا کرد. برخلاف انواع دیگر مجموعه ها، در دسترسی به عناصر SortedList به کلید نیاز است . پس ، مطمئن شوید که کلید موجود در SortedList وجود دارد، در غیر این صورت استثناء KeyNotFoundException را برمیگرداند.

      مثال : 

      خروجی :

      مثال : 

      همچنین میتوان با استفاده از حلقه های تکرار به مقادیر SortedList دسترسی داشت ، همانطور که در زیر نشان داده شده است:

      مثال : 

      خروجی :

      مثال : 

      همچنین برای دسترسی مقادیر با استفاده از حلقه foreach باید از ساختار KeyValuePair به ثورت زیر استفاده کنیم :

      مثال : 

      خروجی :

      مثال : 

       

      متد TryGetValue :

      اگر مطمئن نیستید که کلید خاصی وجود دارد یا نه از متد TryGetValue برای بازیابی مقدار کلید مشخص شده استفاده کنید. اگر کلید از وجود نداشته باشد، به جای آنکه یک استثناء را برگرداند، مقدار false را بازگشت می دهد.

      مثال : 

      خروجی :

      مثال : 

       

      متدهای Remove و RemoveAt :

      با استفاده از این متدها میتوان مقادیر را از مجموعه SortedList حذف کرد :

      ساختار کلی :

      bool Remove(TKey key)

      void RemoveAt(int index)

      مثال : 

      خروجی :

      مثال : 

       

      متدهای ContainsKey و ContainsValue :

      ContainsKey بررسی می کند که آیا کلید مشخص شده در SortedList وجود دارد یا نه.

      ساختار کلی :

      bool ContainsKey(object key)

      متد ContainsValue تعیین می کند که آیا مقدار مشخص شده در SortedList وجود دارد یا خیر.

      ساختار کلی :

      bool ContainValue(object value)

      مثال : 

       

      دسترسی به مقادیر SortedList با استفاده از Linq :

      شما می توانید از LINQ برای دسترسی و استفاده از عناصر مجموعه SortedList با استفاده از معیارهای مختلف استفاده کنید.

      مثال : 

       

      مثال : 

      خروجی :

      مثال : 

       

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

      1. #C دارای مجموعه SortedList عمومی و غیر عمومی است.
      2. SortedList جفت کلید-مقدار را برا اساس کلید بصورت صعودی ذخیره می کند. کلید باید منحصر به فرد باشد و نمی تواند مقدار Null باشد در حالیکه مقدار آن می تواند Null یا تکراری باشد.
      3. Generic SortedList کلید ها و مقادیر انواع داده های مشخص شده را ذخیره می کند. بنابراین نیازی به تبدیل نوع نیست.
      4. جفت کلید-مقدار را می توان با استفاده از ساختار KeyValuePair استفاده کرد.
      5. مقدار را می توان با استفاده از شماره اندیس مشاهده کرد. همچنین در  SortedList میتوان با استفاده از کلید نیز به عناصر آن دسترسی داشته باشیم.

       

      در این بخش با نوعی دیگر از مجموعه های عمومی (Generic) در #C به نام SortedList آشنا شدید ، در بخش بعدی قصد داریم شما را با نوعی دیگر از این مجموعه ها به نام Dictionary آشنا کنیم.

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