لیست ها و مجموعه ها در C#
در این بخش به بررسی لیست ها و مجموعه ها در C# می پردازیم، یکی از ویژگیهای مهم زبان برنامهنویسی C#، پشتیبانی از ساختارهای دادهای متنوع و قدرتمند برای مدیریت و سازماندهی اطلاعات است. این ساختارها شامل لیستها و مجموعهها میباشند که به برنامهنویسان امکان ذخیره، بازیابی، و کار با دادهها را به شیوهای ساده و کارآمد میدهند. استفاده از این ابزارها باعث میشود که بتوانیم حجم زیادی از دادهها را مدیریت کنیم و عملیات پیچیدهای همچون جستجو، مرتبسازی و فیلتر کردن را به راحتی انجام دهیم.
در این مقاله قصد داریم با جزئیات به بررسی لیستها و مجموعهها در C# بپردازیم. ابتدا مفاهیم ابتدایی و تفاوتهای این دو نوع ساختار دادهای را توضیح میدهیم و سپس به جزئیات و مثالهایی از استفاده از انواع رایج آنها مانند List<T>
، Dictionary<K,V>
و HashSet<T>
میپردازیم.
لیستها در C#
لیستها (List<T>
) یکی از رایجترین انواع مجموعههای عمومی (Generic Collections) در C# هستند که به برنامهنویسان این امکان را میدهند که مجموعهای پویا از اشیاء را ذخیره کنند. این ساختار از فضای حافظه بهصورت خودکار برای افزودن یا حذف عناصر استفاده میکند، به همین دلیل به عنوان یک جایگزین برای آرایههای سنتی شناخته میشود.
ویژگیهای اصلی لیستها:
- پویا بودن: برخلاف آرایهها، اندازه لیستها میتواند بهصورت پویا تغییر کند.
- دسترسی ایندکسی: میتوان به عناصر موجود در لیست از طریق اندیس آنها دسترسی پیدا کرد.
- پشتیبانی از انواع مختلف: با استفاده از جنریکها، میتوان هر نوع دادهای را در یک لیست ذخیره کرد.
نمونه کد:
توضیح کد:
- ابتدا یک لیست از اعداد صحیح تعریف کردیم.
- با استفاده از متدهای
Add
وAddRange
عناصر جدیدی به لیست اضافه کردیم. - با استفاده از حلقه
foreach
تمامی عناصر لیست را نمایش دادیم. - یکی از عناصر را با استفاده از متد
Remove
حذف کردیم.
مزایا و کاربردها:
- مناسب برای زمانی که اندازه دادهها از ابتدا مشخص نیست.
- ابزارهای کاربردی برای افزودن، حذف، جستجو و مرتبسازی دادهها.
مجموعهها (Sets) در C#
مجموعهها یکی دیگر از ساختارهای دادهای هستند که برای ذخیره دادهها بدون تکرار و با قابلیت جستجوی سریع طراحی شدهاند. یکی از انواع اصلی مجموعهها در C#، HashSet<T>
است.
ویژگیهای اصلی مجموعهها:
- بدون تکرار بودن عناصر: مجموعهها تنها یک نسخه از هر مقدار را نگهداری میکنند.
- عملکرد بالا در جستجو: به دلیل استفاده از الگوریتمهای هش، عملیات جستجو و درج سریع انجام میشود.
- عدم ترتیب عناصر: عناصر مجموعه دارای ترتیب خاصی نیستند.
نمونه کد:
توضیح کد:
- یک مجموعه با استفاده از
HashSet<T>
تعریف شد. - عنصر
3
به دلیل وجود قبلیاش در مجموعه، افزوده نشد. - با استفاده از متد
Contains
بررسی کردیم که آیا یک مقدار در مجموعه موجود است یا خیر.
مزایا و کاربردها:
- مناسب برای دادههایی که تکرار آنها اهمیت ندارد.
- کاربرد در ذخیره دادههای یکتا، همچون شناسهها یا مقادیر کلیدی.
مقایسه لیستها و مجموعهها
ویژگی | لیستها (List<T> ) | مجموعهها (HashSet<T> ) |
---|---|---|
تکرار عناصر | امکانپذیر | غیرممکن |
دسترسی ایندکسی | بله | خیر |
سرعت جستجو | نسبتاً کمتر | بسیار سریع |
حفظ ترتیب عناصر | بله | خیر |
استفاده اصلی | مدیریت دادههای دارای ترتیب | مدیریت دادههای یکتا |
دیکشنریها در C#
دیکشنریها (Dictionary<K,V>
) یکی دیگر از انواع مجموعههای عمومی در C# هستند که برای ذخیره دادهها به صورت جفت کلید-مقدار طراحی شدهاند. این ساختار برای مواقعی که دسترسی سریع به دادهها بر اساس یک کلید نیاز است، بسیار کاربردی است.
نمونه کد:
توضیح کد:
- دیکشنری با مقادیر کلید-مقدار تعریف شد.
- به مقادیر بر اساس کلید دسترسی پیدا کردیم و مقادیر جدیدی به دیکشنری اضافه کردیم.
لیستها و مجموعهها در C# ابزارهای قدرتمندی برای مدیریت دادهها هستند. لیستها برای دادههای دارای ترتیب و تغییرپذیر مناسباند، در حالی که مجموعهها برای دادههای یکتا و بدون ترتیب استفاده میشوند. علاوه بر این، دیکشنریها امکان ذخیرهسازی دادهها به صورت کلید-مقدار را فراهم میکنند. آشنایی و استفاده از این ساختارها میتواند کدنویسی شما را کارآمدتر و حرفهایتر کند.
آیا این مطلب برای شما مفید بود ؟