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



  • ۲۵
  • مرداد

جلسه ۳۲ : معرفی SortedList در #C

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

      مقدمه :

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

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

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

      #C دارای دو نوع ، Generic SortedList و Non-Generic SortedList است ، در اینجا ما در مورد Non-Generic SortedList صحبت می کنیم .

       

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

      توضیحاتپراپرتی
      تعیین یا بازگشت تعداد عناصری که SortedList می تواند ذخیره کند .Capacity
      تعداد عناصر موجود در SortedList را بازگشت میدهد.Count
      نشان می دهد که آیا لیست مرتب شده دارای اندازه ثابت است یا خیر. که اگر true باشد نشان دهنده اینست که لیست دارای سایز ثابتی است.IsFixedSize
      نشان می دهد که آیا SortedList فقط خواندنی است یا خیر. دو مقدار true و false را برمی گرداند.IsReadOnly
      تعیین یا بازگشت مقدار عنصر بر اساس کلید مشخص شده در SortedList .Item
      بازگشت لیست کلیدهای SortedListKeys
      بازگشت لیست مقدارهای SortedListValues

       

      توضیحاتمتد
       عنصری شامل کلید و مقدار را به SortedList اضافه می کند.Add(object key, object value)
       عنصر را بر اساس کلید مشخصی حذف می کند.Remove(object key)
        عنصر را بر اساس اندیس مشخصی حذف می کند.RemoveAt(int index)
       جستجو بر اساس کلید مشخص شده در SortedList .Contains(object key)
       تمام عناصر را از SortedList حذف می کند.Clear()
       مقدار را براساس شماره اندیس ذخیره شده در SortedList به دست می آورد.GetByIndex(int index)
       کلید را براساس شماره اندیس ذخیره شده در SortedList به دست می آورد.GetKey(int index)
       شماره اندیس کلید را براساس کلید ذخیره شده در SortedList به دست می آورد.IndexOfKey(object key)
        شماره اندیس مقدار را براساس مقدار ذخیره شده در SortedList به دست می آورد.IndexOfValue(object value)

       

      متد Add :

      از متد Add برای اضافه کردن عناصر بهمراه مقدار و کلید به SortedList استفاده می کنیم.

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

      مثال : 

       

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

      حتی هنگامی که عنصری را از SortedList حذف می کنید، بقیه عناصر دوباره مرتب می شوند.

      مجموعه SortedList در #C

      مجموعه SortedList در #C

       

      لطفا توجه داشته باشید که sortedList2 کلید را به ترتیب حروف الفبا انگلیسی در تصویر بالا مرتب کرده است.

      کلید SortedList می تواند از هر نوع داده باشد، اما باید همه کلید ها از یک نوع باشند.

      مثال زیر، خطای زمان اجرا را بازمی گرداند:

      مثال : 

       

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

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

      مثال : 

      خروجی :

      مثال : 

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

      میتوان با استفاده از حلقه های تکرار نیز به مقادیر عناصر مجموعه دسترسی داشته باشیم:

      مثال : 

      خروجی :

      مثال : 

       

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

      توجه داشته باشید که نوع عنصر در حلقه foreach باید DictionaryEntry باشد.

      مثال : 

      خروجی :

      مثال : 

       

      متد Remove و RemoveAt :

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

      مثال : 

      خروجی :

      مثال : 

       

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

      متدهای Contains و ContainKey تعیین می کند که آیا کلید مشخص شده در مجموعه SortedList وجود دارد یا خیر.

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

      مثال : 

       

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

      1. زبان #C دارای مجموعه ی  non-generic SortedList و generic SortedList می باشد.
      2. SortedList عناصری را تشکیل شده از دو پارامتر کلید و مقدار در جهت صعودی بر اساس کلید ذخیره می کنند. کلید باید منحصر به فرد باشد و نمی تواند صفر باشد در حالیکه مقدار آن می تواند صفر یا تکراری باشد.
      3. Non-generic SortedList ، کلید ها و مقادیر هر نوع داده را ذخیره می کنند. بنابراین مقادیر باید قبل از استفاده به نوع داده مناسب تبدیل شوند.
      4. عنصر دارای کلید و مقدار میتواند به DictionaryEntry تبدیل شود.
      5. دسترسی به مقدار هر عنصر SortedList بر اساس کلید یا شماره اندیس امکان پذیر است.

       

      در این قسمت با نوعی از مجموعه های غیر عمومی (non-generic)  به نام SortedList در زبان #C آشنا شدید.

      در قسمت بعدی شما را با نوعی دیگر از این مجموعه ها به نام Stack (پشته) آشنا خواهیم کرد.

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