آشنایی با کلاس های مجموعه ای

پنجشنبه 19 اردیبهشت 1392

آشنایی با کلاس های مجموعه ای <br/> همانطور که می دانید بهترین راه برای جمع آوری عنصرهایی از یک نوع، آرایه ها هستند. DotNetFramework کلاس های مختلفی را فراهم کرده که آن ها نیز عنصر ها را به روش های مخصوصی جمع آوری می کنند. آنها همان کلاس های مجموعه ای هستند و در فضای نام System.Collection و زیر فضاهای آن قرار دارند.

کلاس های مجموعه ای چیستند؟
همانطور که می دانید بهترین راه برای جمع آوری عنصرهایی از یک نوع، آرایه ها هستند. DotNetFramework کلاس های مختلفی را فراهم کرده که آن ها نیز عنصر ها را به روش های مخصوصی جمع آوری می کنند. آنها همان کلاس های مجموعه ای هستند و در فضای نام System.Collection و زیر فضاهای آن قرار دارند.
کلاس های مجموعه ای پایه ، عنصرهایشان را به عنوان شیء ، دریافت کرده ، نگه داشته و بر می گردانند. بنابراین نوع عنصر یک کلاس مجموعه ای ،object است.
از آنجا که عناصر از نوع object می باشند، می توان مقادیری از هر نوع را در آن ذخیره نمود.

ArrayList: 
یک کلاس مفید برای مخلوط کردن عنصرها در یک آرایه است. موقعیت های خاصی وجود دارد که یک آرایه معمولی می تواند بسیار محدود کننده باشد:
1- هنگامی که بخواهیم آرایه را تغییر دهیم.(باید یک آرایه جدید ایجاد کنیم و عنصرها را کپی کنیم و در نهایت ارجاعات را به روز کنیم)
2- اگر بخواهیم یک عنصر را از آرایه حذف کنیم، باید آن عنصر را در متغیری ذخیره کنیم و سپس تمامی عناصر بعدی آرایه را یکی به بالا شیفت دهیم.این درست کار نمی کند، زیرا دو کپی از عنصر آخر در انتها برجای می ماند.
3- اگر بخواهیم عنصر جدیدی را در جایی از آرایه قرار دهیم. ابتدا باید برایش جای خالی ایجاد کنیم و...

تمامی این مشکلات با استفاده از ArrayList از بین خواهد رفت.

ویژگی های ArrayList: 
1- می توان با استفاده از متد Remove در ArrayList یک عنصر را حذف نمود،سپس ArrayList عنصرهایش را خود به خود مرتب می کند.
2- می توان توسط متد Add در ArrayList یک عنصر را به انتهای آن اضافه کرد. در این حالت نیز ArrayList عناصرش را مرتب خواهد کرد و در صورت نیاز تغییر اندازه نیز خواهد داد.
3- می توان توسط متد Insert عنصری را در میان عناصر دیگر درج نمود.
یک مثال کوچک رو با هم جلو می بریم. ساخت و اضافه کردن عناصر به یکArrayList

System.Collections.ArrayList oArrayList = new System.Collections.ArrayList();
//پر کردن ArrayList
for (int i = 0; i < 5; i++)
{
oArrayList.Add(i);
}

خواندن عناصر و نمایش آن ها در یک ListBox:

//خواندن ArrayList و نمایش آن در ListBox
listBox1.Items.Clear();
for (int k = 0; k < oArrayList.Count; k++)
{
listBox1.Items.Add(oArrayList[k].ToString());
}

حذف یک عنصر بر اساس ایندکس:

//حذف عنصر اگر Index = 3
oArrayList.RemoveAt(2);

بخش دوم مقاله :

کلاس های مجموعه ای چیستند؟
همانطور که می دانید بهترین راه برای جمع آوری عنصرهایی از یک نوع، آرایه ها هستند. DotNetFramework کلاس های مختلفی را فراهم کرده که آن ها نیز عنصر ها را به روش های مخصوصی جمع آوری می کنند. آنها همان کلاس های مجموعه ای هستند و در فضای نام System.Collection و زیر فضاهای آن قرار دارند.
کلاس های مجموعه ای پایه ، عنصرهایشان را به عنوان شیء ، دریافت کرده ، نگه داشته و بر می گردانند. بنابراین نوع عنصر یک کلاس مجموعه ای ،object است.
از آنجا که عناصر از نوع object می باشند، می توان مقادیری از هر نوع را در آن ذخیره نمود.

Queue (صف) :
کلاس Queue یک مکانیسم First-in-First-Out ، (FIFO) را پیاده سازی می کند، به این صورت که در صف یک عنصر به انتها اضافه شده(enqueue) و یکی از ابتدای آن حذف می گردد (dequeue).

مثال: 
ساخت و اضافه کردن عناصر به queue:

//Create A Queue List And Fill It
System.Collections.Queue oQueue = new System.Collections.Queue();
for (int i = 5; i < 10; i++)
{
oQueue.Enqueue(i);
}

خواندن عناصر موجود و نمایش در یک ListBox:

//Read Queue List And Show It In ListBox
listBox2.Items.Clear();
foreach (int k in oQueue)
{
listBox2.Items.Add(k.ToString());
}

اضافه کردن یک عنصر به انتهای لیست:

//Adding A Element To Queue List
oQueue.Enqueue(10);

** یادآوری: همانطور که در بخش اول این مقاله اشاره شد، عناصر این مجموعه ها از نوع آبجکت هستند، یعنی مقادیری که شما به این لیست ها اضافه می کنید می توانند از هر نوعی باشند که در اینجا از int استفاده شده است.

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

//Remove The Element
oQueue.Dequeue();

نکته: در QueueList هنگام اضافه کردن ، عنصر به انتهای لیست اضافه می شود ، اما به هنگام حذف ، عنصر از ابتدای لیست حذف می شود.
در این مثال ابتدا لیست به این شکل ساخته می شود: 5,6,7,8,9
بعد از اضافه کردن عنصر 10 لیست به این شکل در خواهد آمد: 5,6,7,8,9,10
و با حذف یک عنصر لیست اینگونه خواهد بود: 6,7,8,9,10
مراحل به همین ترتیب ادامه می یابد.

در StackList سناریو فرق می کند که توضیح داده خواهد شد.

Stack (پشته) :
کلاس Stack یک مکانیسم Last-in-First-Out را پیاده سازی می کند. به این صورت که در یک پشته،عنصر به بالای آن اضافه می شود (عملیات push) و از بالای آن هم حذف می گردد (عملیات pop).

بررسی یک مثال:
 ساخت و اضافه کردن عناصر به Stack:

//Create A StackList And Fill It
System.Collections.Stack oStack = new System.Collections.Stack();
for (int i = 5; i < 10; i++)
{
oStack.Push(i);
}

خواندن عناصر موجود و نمایش در یک لیست باکس:

//Read Stack List And Show It In ListBox
listBox3.Items.Clear();
foreach (object j in oStack)
{
listBox3.Items.Add(j.ToString());
}

در موارد پیشین در این مرحله لیست به این حالت بود: 5,6,7,8,9 اما در اینجا (Stack) لیست اینگونه می باشد: 9,8,7,6,5 (اضافه شده به ابتدای لیست)
اضافه کردن یک عنصر به Stack:

//Adding A Element To StackList
oStack.Push("AspNet");

در این حالت لیست به این شکل خواهد بود: AspNet,9,8,7,6,5
حذف یک عنصر از ابتدای لیست:

//Removing An Element
oStack.Pop();

حالا لیست به این شکل است: 9,8,7,6,5

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 0 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید