تمام جزئیات مهم در مورد نحوه استفاده از این ساختار داده قدرتمند را دریافت کنید.
فرهنگ لغت یک ساختار داده مفید است که به شما امکان می دهد جفت های کلید-مقدار را ذخیره کنید. میتوانید با استفاده از کلید آن به یک مقدار از فرهنگ لغت دسترسی موثر داشته باشید.
دیکشنری ها در سی شارپ از اقداماتی مانند حذف یک مقدار یا تکرار در کل مجموعه مقادیر پشتیبانی می کنند.
دیکشنری در سی شارپ چیست؟
دیکشنری سی شارپ یکی از مهم ترین ساختارهای داده ای است که می توانید درباره آن بیاموزید. این کمی شبیه ساختار داده جاوا HashMap است. کلیدهای آن باید منحصر به فرد باشند، اما می توانند تقریباً از هر نوع باشند. یک فرهنگ لغت ساده از مقادیر اسکالر استفاده می کند.
به عنوان مثال، این مجموعه داده دارای شناسه یک حیوان خانگی به عنوان کلید و نام حیوان خانگی به عنوان مقدار است:
{1001, "Mia"},
{1002, "Oscar"},
{1003, "Birdie"},
{1004, "Bluey"},
{1005, "Leo"},
{1006, "Travis"}
این ساختار به شما امکان می دهد با استفاده از کلید خاصی که به یک رکورد ارجاع می دهد به داده ها دسترسی داشته باشید. به عنوان مثال، می توانید رکورد را با مقدار Birdie با ارجاع به آن با کلید جستجو 1003 بازیابی کنید.
چگونه یک دیکشنری بسازیم
برای ایجاد دیکشنری، باید نوع شیء را هم برای کلید و هم برای مقدار مشخص کنید.
- فرهنگ لغت را ایجاد کنید. در این مثال، کلید یک عدد صحیح و مقدار هر رکورد یک رشته است. Dictionary
pets = new Dictionary (); - شما باید از فضای نام System.Collections.Generic که شامل کلاس Dictionary است استفاده کنید. مطمئن شوید که این کار را در بالای فایل خود انجام می دهید: با استفاده از System.Collections.Generic;
Dictionary<int, string> pets = new Dictionary<int, string>();
using System.Collections.Generic;
نحوه افزودن موارد به دیکشنری
می توانید مواردی را به فرهنگ لغت در طول یا بعد از شروع اولیه آن اضافه کنید.
- شما می توانید موارد را در حین تنظیم اولیه فرهنگ لغت اضافه کنید. برای انجام این کار، پس از عبارت Dictionary جدید اولیه، مقداری را در پرانتزهای مجعد اضافه کنید. Dictionary
pets = new Dictionary (){ {1001, “Mia”}, {1002, “Oscar”} , {1003، “Birdie”}، {1004، “Bluey”}، {1005، “Leo”}، {1006، “Travis”}}؛ - اگر قبلا فرهنگ لغت را ایجاد کرده اید، می توانید از متد Add() داخلی دیکشنری استفاده کنید.pets.Add(1007, “Snowy”);
Dictionary<int, string> pets = new Dictionary<int, string>()
{
{1001, "Mia"},
{1002, "Oscar"},
{1003, "Birdie"},
{1004, "Bluey"},
{1005, "Leo"},
{1006, "Travis"}
};
pets.Add(1007, "Snowy");
شما نمی توانید برای کلیدی که از قبل وجود دارد مقداری اضافه کنید. اگر سعی کنید این کار را انجام دهید، یک ArgumentException دریافت خواهید کرد.
شما نمی توانید از یک مقدار null به عنوان کلید ورودی در فرهنگ لغت استفاده کنید. با این حال، می توانید یک مقدار null را در یک فرهنگ لغت ذخیره کنید.
نحوه اضافه کردن اشیا به دیکشنری
اگر از یک سبک برنامه نویسی شی گرا استفاده می کنید، احتمالاً حداقل یک کلاس دارید که برای ایجاد اشیاء با آن استفاده می کنید. فرض کنید کلاسی داشتید که جزئیات مربوط به حیوانات خانگی را ذخیره می کرد:
می توانید اشیاء ایجاد شده از این کلاس را به دیکشنری اضافه کنید.
- مطمئن شوید که دیکشنری را با نوع شیء Pet که برای مقدار مشخص شده است ایجاد کرده اید. Dictionary
petObjects = new Dictionary (); - شیء حیوان خانگی خود را ایجاد کنید. Pet mia = new Pet(1001, “Mia”, new DateTime(2010, 6, 29), 9.0, new DateTime(2022, 05, 02));
- شیء جدید حیوان خانگی را به دیکشنری.petObjects.Add(1001, mia) اضافه کنید.
Dictionary<int, Pet> petObjects = new Dictionary<int, Pet>();
Pet mia = new Pet(1001, "Mia", new DateTime(2010, 6, 29), 9.0,
new DateTime(2022, 05, 02));
petObjects.Add(1001, mia);
نحوه دسترسی به یک مورد در دیکشنری
با استفاده از کلید می توانید به یک مورد در فرهنگ لغت دسترسی داشته باشید.
- از نام متغیر برای فرهنگ لغت و به دنبال آن کلید اطراف یک جفت کروشه استفاده کنید. این شیء ذخیره شده در آن بخش خاص از dictionary را برمی گرداند.var pet = petObjects[1001];Console.WriteLine(pet.name);
var pet = petObjects[1001];
Console.WriteLine(pet.name);
چگونه در فرهنگ لغت تکرار کنیم
می توانید از یک حلقه foreach برای تکرار روی یک فرهنگ لغت استفاده کنید:
- از یک foreach برای تکرار روی هر KeyValuePair در فرهنگ لغت استفاده کنید. با فرض اینکه ورودی تکرارکننده خود را فراخوانی کرده اید، می توانید با استفاده از enter.Key و entry.Value.foreach به کلید و مقدار دسترسی پیدا کنید ( ورودی KeyValuePair
در petObjects){ // print the key Console.WriteLine(entry.Key); // چاپ نام شیء برای آن رکورد Console.WriteLine(entry.Value.name);}
foreach (KeyValuePair<int, Pet> entry in petObjects)
{
// print the key
Console.WriteLine(entry.Key);
// print the name of the object for that record
Console.WriteLine(entry.Value.name);
}
چگونه یک مورد را در دیکشنری به روز کنیم
می توانید یک مورد را با بازنویسی مقدار آن در فرهنگ لغت به روز کنید.
- اگر انواع شی ساده در فرهنگ لغت خود دارید، می توانید مقدار یک رکورد را مستقیماً بازنویسی کنید.pets[1001] = “Maya”;
- اگر اشیایی را به فرهنگ لغت خود اضافه کرده اید، می توانید مقداری را روی یک شی کاملاً جدید بازنویسی کنید. حیوان خانگی حیوان خانگی = new Pet(1001, “Bunny”, new DateTime(2021, 8, 1), 3.0, new DateTime(2021, 8 , 4));petObjects[1001] = اسم حیوان دست اموز;
- اگر یک شی در فرهنگ لغت دارید، می توانید یک ویژگی را نیز به روز کنید. می توانید مقدار ویژگی را مستقیماً بازنویسی کنید یا از یک setter.petObjects[1001].name = “Maya”;// ORpetObjects[1001].setName(“Maya”);
pets[1001] = "Maya";
Pet bunny = new Pet(1001, "Bunny", new DateTime(2021, 8, 1), 3.0, new DateTime(2021, 8, 4));
petObjects[1001] = bunny;
petObjects[1001].name = "Maya";
// OR
petObjects[1001].setName("Maya");
چگونه یک مورد را در دیکشنری حذف کنیم
شما می توانید انتخاب کنید که یک مورد یا همه موارد را حذف کنید.
- برای حذف یک مورد، از متد Built-in Remove() دیکشنری استفاده کنید. کلید رکوردی را که می خواهید حذف کنید به عنوان argument وارد کنید.petObjects.Remove(1002);
- برای حذف همه موارد در فرهنگ لغت، از متد داخلی Clear() دیکشنری استفاده کنیدpetObjects.Clear();
petObjects.Remove(1002);
petObjects.Clear();
ساختارهای داده در سی شارپ
در این آموزش نحوه ایجاد دیکشنری در سی شارپ و نحوه افزودن موارد به دیکشنری توضیح داده شده است. علاوه بر این، نحوه به روز رسانی، حذف، و تکرار از طریق فرهنگ لغت را نیز پوشش داده است.
اگر می خواهید واژگان ساختار داده خود را بهبود ببخشید، می توانید شروع به کاوش در ساختار داده های پیشرفته تر کنید. برخی از نمونههای آن عبارتند از فیبوناچی هیپ، درخت AVL یا درخت سیاه قرمز.