دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
مدیریت دادهها با Serialization و JSON در #C
1404/10/17 -
حذف ردیفهای تکراری در SQL Server
1404/10/17 -
آشنایی با دستور CREATE VIEW در SQL Server
1404/10/16 -
آشنایی با Sorted List در سی شارپ
1404/10/16 -
Schema در SQL Server چیست؟
1404/10/15 -
استفاده عملگر LIKE در SQL Server
1404/10/15
آشنایی با Sorted List در سی شارپ
مقدمه
در بسیاری از پروژههای سی شارپ، نیاز داریم دادهها را بهصورت کلید (Key-Value) ذخیره کنیم و همزمان به آنها دسترسی سریع و مرتبشده داشته باشیم.
در چنین شرایطی، کلاس SortedList یکی از ساختارهای داده کاربردی در داتنت محسوب میشود.
SortedList امکان ذخیره دادهها بهصورت مرتب بر اساس کلید را فراهم میکند و با ترکیب سادگی، سرعت دسترسی و نظم، در سناریوهای مختلف برنامهنویسی مورد استفاده قرار میگیرد.
SortedList در سی شارپ چیست؟
SortedList یک ساختار داده در سی شارپ است که اطلاعات را بهصورت کلید (مقدار) نگه میدارد و بهطور خودکار عناصر را بر اساس کلید مرتب میکند.
هر کلید فقط یکبار میتواند وجود داشته باشد و همین ویژگی، دادهها را منظم و قابل پیشبینی میکند.
علاوه بر دسترسی با کلید، این کالکشن امکان دسترسی به عناصر از طریق ایندکس عددی را نیز فراهم میکند؛ قابلیتی که کار با دادهها را بسیار منعطف میکند.
چرا SortedList مهم است؟
در دنیای واقعی برنامهنویسی، مدیریت دادهها تنها به ذخیره کردن آنها خلاصه نمیشود؛ سرعت دسترسی و نظم مرتب بودن اطلاعات هم اهمیت زیادی دارد.
SortedList این امکان را فراهم میکند که دادهها همواره مرتب بمانند و دسترسی به آنها سریع و قابل پیشبینی باشد.
همین ویژگی، باعث میشود در پروژههای مختلف، از سیستمهای ساده تا برنامههای پیچیده، انتخابی کارآمد و مطمئن باشد.
مواردی که اهمیت SortedList را نشان میدهد:
-
نیاز به مرتبسازی خودکار دادهها بدون کدنویسی اضافی
-
امکان دسترسی سریع به عناصر با کلید
-
مناسب برای مجموعههای کوچک تا متوسط که مرتبسازی دائمی نیاز دارند
-
گزینهای بهینه و سادهتر نسبت به Dictionary یا List در پروژههای خاص
ویژگیها و خصوصیات SortedList در سی شارپ
کار کردن با دادهها تنها ذخیره و بازیابی آنها نیست؛ نظم و سرعت دسترسی به دادهها، بخش مهمی از طراحی نرمافزار است.
SortedList این امکان را میدهد که دادهها همواره مرتب و قابل پیشبینی باشند و مدیریت آنها سادهتر شود.
شناخت دقیق ویژگیهای این ساختار داده، باعث میشود از مزایای آن بهطور کامل در پروژهها استفاده کنیم.
1. مرتبسازی خودکار بر اساس کلید
SortedList بهطور پیشفرض همه عناصر را بر اساس کلید مرتب میکند.
این ویژگی باعث میشود حتی بدون نوشتن کد اضافی، دادهها همیشه منظم و قابل جستجو باشند.
-
مرتبسازی صعودی انجام میشود
-
ترتیب وابسته به نوع کلید است (int، string، DateTime و …)
-
نیاز به مرتبسازی دستی ندارد
2. ذخیرهسازی KeyValue
هر عنصر در SortedList شامل یک کلید یکتا و یک مقدار است.
این ساختار ساده، دسترسی و مدیریت دادهها را بسیار راحت میکند.
-
هر کلید فقط یکبار میتواند وجود داشته باشد
-
اضافه کردن کلید تکراری باعث ایجاد خطا میشود
3. دسترسی دوگانه به عناصر
SortedList امکان دسترسی به دادهها را به دو شکل ارائه میدهد، که انعطاف بالایی در مدیریت اطلاعات ایجاد میکند.
-
میتوان با کلید به مقدار مربوطه رسید
-
میتوان با ایندکس عددی به عنصر مورد نظر دسترسی داشت
4. مصرف حافظه کمتر نسبت به SortedDictionary
در پروژههایی با حجم داده کم تا متوسط، SortedList بهینهتر از SortedDictionary عمل میکند.
این موضوع باعث کاهش مصرف حافظه و افزایش کارایی میشود.
- مناسب مجموعههای کوچک تا متوسط
- بهینه در استفاده از حافظه نسبت به SortedDictionary
نحوه ایجاد SortedList در سی شارپ
قبل از افزودن یا حذف عناصر، ابتدا باید یک SortedList ایجاد کنیم.
ایجاد SortedList غیرجنریک
using System.Collections;
SortedList list = new SortedList();
ایجاد SortedList جنریک (روش پیشنهادی)
using System.Collections.Generic;
SortedList<int, string> messages = new SortedList<int, string>();
ویژگی نسخه جنریک:
-
امنتر است
-
خطاهای زمان اجرا را کاهش میدهد
-
عملکرد بهتری دارد
نحوه اضافه شدن عناصر به SortedList
اضافه کردن عناصر یکی از مهمترین عملیاتها در SortedList است. این کار معمولاً با متد `Add` انجام میشود.
افزودن عنصر جدید
messages.Add(2, "Message B");
messages.Add(1, "Message A");
messages.Add(3, "Message C");
🔹 نکته مهم:
حتی اگر ترتیب اضافهکردن نامنظم باشد، SortedList دادهها را به شکل زیر ذخیره میکند:
1 → Message A
2 → Message B
3 → Message C
خطای کلید تکراری
اگر کلیدی که قبلا وجود داشته باشد اضافه می شود:
messages.Add(1, "New Message");
برنامه با Exception مواجه میشود.
دسترسی به عناصر در SortedList
پس از ذخیره دادهها در SortedList، مهم است که بتوانیم بهسرعت و بهصورت دقیق به آنها دسترسی داشته باشیم.
SortedList این امکان را میدهد که هم با کلید و هم با ایندکس عددی به دادهها برسیم و همچنین لیست کاملی از کلیدها و مقادیر داشته باشیم، تا مدیریت دادهها ساده و انعطافپذیر باشد.
روشهای دسترسی به عناصر:
-
دسترسی با کلید
-
با استفاده از کلید میتوان مقدار مربوطه را مستقیماً دریافت کرد:
string msg = messages[1];
دسترسی با ایندکس
در صورتی که ترتیب ورود یا مرتبسازی اهمیت داشته باشد، میتوان با ایندکس عددی به مقدار دسترسی داشت:
string msg = messages.Values[0];
دسترسی به کلیدها و مقادیر
برای پیمایش همه کلیدها یا مقادیر میتوان از حلقه استفاده کرد:
foreach (var key in messages.Keys)
{
Console.WriteLine(key);
}
یا
foreach (var value in messages.Values)
{
Console.WriteLine(value);
}
حذف عناصر از SortedList
مدیریت دادههای قدیمی یا غیرضروری، بخشی جداییناپذیر از نگهداری مجموعهها است. SortedList چند روش ساده برای حذف عناصر فراهم میکند که به کاهش مصرف حافظه و بهبود کارایی کمک میکند.
روشهای حذف عناصر:
-
حذف با کلید
-
برای حذف یک عنصر مشخص با کلید مربوطه از متد `Remove` استفاده میکنیم:
messages.Remove(2);
حذف با ایندکس
در صورتی که بخواهیم عنصر مشخصی بر اساس موقعیت آن حذف شود:
messages.RemoveAt(0);
پاکسازی کامل
برای حذف همه عناصر و بازنشانی SortedList میتوان از متد `Clear` استفاده کرد:
messages.Clear();
مثال کاربردی SortedList برای مدیریت صف دادهها در سی شارپ
گاهی در برنامهها نیاز داریم دادهها را به ترتیب اولویت یا ترتیب خاص پردازش کنیم.
SortedList یک راه ساده و موثر برای مدیریت چنین صفهایی است، بدون اینکه کدنویسی پیچیده یا کتابخانه خارجی نیاز داشته باشیم.
این ساختار به شما امکان میدهد دادهها را هم مرتب و هم قابل دسترسی سریع نگه دارید.
پروژه ساده
فرض کنید میخواهیم پیامهایی با اولویت مختلف را ذخیره کنیم تا اولویت بالا زودتر پردازش شود:
SortedList<int, string> taskQueue = new SortedList<int, string>();
// اضافه کردن پیامها با اولویتهای متفاوت
taskQueue.Add(1, "پردازش فوری دادهها");
taskQueue.Add(3, "کارهای پسزمینه");
taskQueue.Add(2, "پردازش متوسط");
پردازش دادهها بر اساس اولویت
با استفاده از SortedList، ترتیب پردازش به صورت خودکار بر اساس کلید (اولویت) انجام میشود:
foreach (var task in taskQueue)
{
Console.WriteLine($"اولویت: {task.Key} → {task.Value}");
}
خروجی:
اولویت: 1 → پردازش فوری دادهها
اولویت: 2 → پردازش متوسط
اولویت: 3 → کارهای پسزمینه
نکات کاربردی
-
کلید عددی را میتوان به عنوان اولویت در نظر گرفت
-
مقدار میتواند متن پیام، نام تسک یا شیء پیچیده باشد
-
اضافه کردن دادهها با ترتیب دلخواه، باز هم SortedList آنها را خودکار مرتب میکند
-
این روش برای مدیریت صف کارها، پیامها یا دادههای اولویتدار بسیار کاربردی است
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
مقایسه SortedList با Dictionary و SortedDictionary
انتخاب بین انواع ساختارهای داده همیشه بستگی به نیاز پروژه دارد.
فهم تفاوتهای کلیدی بین Dictionary، SortedDictionary و SortedList کمک میکند تا بهترین تصمیم را بگیریم و کارایی و مدیریت دادهها بهینه شود.
تفاوتها به صورت خلاصه:
-
Dictionary: دسترسی سریع اما بدون حفظ ترتیب دادهها
-
SortedDictionary: دادهها مرتب میشوند، مناسب مجموعههای بزرگ و تغییرپذیر
-
SortedList: دادهها مرتب و سبک، مناسب مجموعههای کوچک تا متوسط
اگر دادهها زیاد نیستند و حفظ ترتیب اهمیت دارد، SortedList انتخابی هوشمندانه و بهینه است.
چه زمانی از SortedList استفاده نکنیم؟
با اینکه SortedList ساده و مرتب است، همیشه مناسب تمام پروژهها نیست.
در شرایطی که حجم دادهها زیاد یا عملیات درج و حذف مکرر است، استفاده از آن میتواند باعث کاهش کارایی شود.
مواردی که استفاده از SortedList مناسب نیست:
-
مجموعههای بسیار بزرگ از داده
-
عملیات Insert و Delete پرتکرار
-
زمانی که ترتیب عناصر اهمیتی ندارد
در این موارد، استفاده از Dictionary یا SortedDictionary گزینهای بهینهتر است.
نکات مهم برای استفاده بهینه از SortedList
برای اینکه بیشترین بهره را از SortedList ببرید، رعایت چند نکته ساده اما مهم توصیه میشود.
این نکات باعث میشوند هم از نظر سرعت و هم مدیریت حافظه بهینه عمل کنید.
-
همیشه از نسخه جنریک (`SortedList<TKey, TValue>`) استفاده کنید
-
کلیدها را ساده و قابل مقایسه انتخاب کنید
-
از SortedList برای مجموعههای حجیم استفاده نکنید
-
در سیستمهای اولویتدار، میتوان آن را بهعنوان جایگزین ساده صفهای دستی به کار برد
پرسشهای آشنایی با Sorted List در سی شارپ
1. آیا SortedList سرعت بالایی دارد؟
برای مجموعههای کوچک و متوسط، بله. اما برای دادههای بسیار بزرگ، SortedDictionary مناسبتر است.
2. آیا SortedList از چند نخ (Thread) پشتیبانی میکند؟
خیر، برای محیطهای چندنخی باید از Synchronization استفاده شود.
نتیجهگیری
SortedList در سی شارپ یک ساختار داده قدرتمند، ساده و مرتب است که در مدیریت دادههای اولویتدار انتخابی هوشمندانه محسوب میشود.
اگر بهدنبال ترکیب نظم، سرعت و خوانایی کد هستید، SortedList میتواند بخش مهمی از معماری نرمافزار شما باشد.
دوره های مرتبط
آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.
1,700,000 تومان
آموزش جامع ساخت نرم افزار حسابداری و انبارداری
سیستم حسابداری و انبارداری یکی از ابزارهای مهم برای سازمانها و شرکتها است که فرایند های عملیاتی را بهبود و افزایش می دهد.










