شروحات متفرقة

شرح ArrayList في لغة سي شارب

ArrayList

لعل المصفوفة Array قد سهلت على المبرمجين التخلص من انشاء اعداد كبيرة من المتغيرات فالهدف من استخدام Array هو احتواء عدد محدد من المتغيرات ليصبح على شكل مصفوفة تتضمن عناصر وكل عنصر يحتوي على متغير إلا ان هنالك شروط قبل استخدام المصفوفة Array وهي ان يكون عدد العناصر محدد فلا يجوز انشاء مصفوفة عدد عناصرها غير معروف والشرط الثاني هو تحديد نوع البيانات المراد تخزينها داخل عناصر المصفوفة فمثلاً لا يجوز تخزين قيمة من نوع double داخل العنصر الأول وقيمة من نوع String في العنصر الثاني .

ما سنقوم به خلال هذه المقالة الكشف عن نوع اكثر مرونة من المصفوفات المعروفة وهو ArrayList وهي عبارة عن فئة class اعدت سابقاً داخل لغة سي شارب يمكن استخدامها عن طريق إنشاء كائن object من هذه الفئة وبعد ذلك يمكن انشاء مصفوفة مرنة يمكن التحكم بعدد عناصرها وحذف عنصر محدد وإنشاء بعض الوظائف على هذه المصفوفة على عكس ما يمكن فعله عند استخدام المصفوفة البدائية Array .

أهم ميزات ArrayList : 

1- يمكن إنشاء عدد محدد من العناصر داخل ArrayList

2- يسمح بإضافة عناصر جديدة داخل ArrayList

3- يسمح بحذف عناصر داخل ArrayList

4- يمكن تنظيم العناصر داخل ArrayList

5- يمكن اضافة اي نوع من البيانات داخل عناصر ArrayList

إنشاء ArrayList : 

اولاً : يجب الاشارة إلى ان ArrayList هي عبارة عن Collection لذلك يجب جلب مجال الاسماء System.Collections

ثانياً : نقوم بإنشاء كائن object من الفئة ArrayList ويجب الإشارة إلى ان المشيد Constructor هو Overloading Constructor اي له أكثر من شكل :

دون ارسال اي شيء للـ constructor يتم إنشاء ArrayList من 4 عناصر

 ارسال رقم int للـ constructor يتم إنشاء ArrayList عدد عناصرها بقيمة الرقم

ارسال Collection مثل : Array  للـ Constructor يتم إنشاء ArrayList عدد عناصرها بعدد عناصر collection بالاضافة إلى نسخ عناصر Collection إلى عناصر ArrayList
ثالثاً : استخدام الدوال او الوظائف للـ ArrayList 

الوظيفة Add

الغرض : تستخدم هذه الوظيفة لأضافة عنصر للـ ArrayList يمكن اضافة اي قيمة بغض النظر عن نوع البيانات

مثال :

 

الوظيفة AddRange

الغرض : تستخدم هذه الوظيفة لأضافة Collection مثل : Array  للـ ArrayList وفي هذه الحالة سيتم اضافة جميع عناصر Array إلى عناصر ArrayList

مثال :

 

الوظيفة Contains

الغرض : تستخدم هذه الوظيفة للبحث عن عنصر داخل ArrayList عن طريق القيمة اي نرسل القيمة التي نريد البحث عنها للوظيفة Contains فإذا كان موجوداً ترجع لنا True وإذا لم يكن موجوداً ترجع لنا False

مثال :

لاحظ في المثال السابق الاسم Ahmed موجود داخل ArrayList فبهذه الحالة سترجع لنا True ، لو قمنا بتنفيذ البرنامج سيظهر على شاشة المخرجات

Does Ahmed contain in ArrayList ? True

 

الخصائص Capacity & Count

Capacity : عبارة عن Getter&Setter/Property Method يمكن تغيير قيمتها ويمكن قراءة قيمتها وتستخدم لقراءة وتغيير حجم ArrayList

ملاحظة : إذا قمنا بإنشاء ArrayList بدون ان نرسل قيمة رقمية int إلى Constructor الخاص بـ ArrayList يكون حجم ArrayList يساوي 4 واذا اردنا تغيير هذا الحجم نستعمل الخاصية Capacity

Count : عبارة عن Getter/Property Method يمكن قراءة عدد العناصر المستخدمة داخل ArrayList اي العناصر التي تحتوي على قيم فقط

مثال :

في مثالنا السابق انشئنا ArrayList تحتوي على 8 عناصر ولكن لم نخزن إلى في 4 عناصر فـ Count = 4 , Capacity = 8

 

الوظيفة CopyTo

الغرض : تستخدم هذه الوظيفة لنسخ عناصر ArrayList  إلى  Array ولها أكثر من شكل 

مثال 1 :

لاحظ في المثال السابق قمنا بنسخ عناصر ArrayList إلى عناصر Array بالترتيب أي

Array

مثال 2 :

لاحظ في المثال السابق قمنا بنسخ عناصر ArrayList إلى عناصر  Array ولكن بدئاً من العنصر الثاني في Array

Array2

مثال 3 :

هذه الوظيفة تأخذ 4 بارمترات

البارميتر الأول : نرسل رقم index الذي نريد ان نبدأ منه عملية نسخ عناصر ArrayList

البارميتر الثاني : نرسل اسم Array

البارميتر الثالث : نحدد رقم index الذي نريد البدأ منه في Array

البارميتر الرابع : نحدد عدد العناصر التي نريد نسخها من ArrayList

Array3

 

الوظيفة Remove & RemoveAt

Remove : تستخدم لحذف عنصر عن طريق ارسال قيمته .

RemoveAt : تستخدم لحذف عنصر عن طريق ارسال Index الخاص بالعنصر .

RemoveRange: تستخدم لحذف مجموعة من العناصر ونرسل لها قيمتين (from index , To index) وتقوم بحذف المجموعة الواقعة بينهم

مثال :

لاحظ في المثال السابق أضفنا Temp للـ ArayList ثم قمنا بحذفه عن طريق Remove بإرسال قيمة Test ثم قمنا بإضافة Test2 وقمنا بحذفها عن طريق RemoveTo بارسال index وهو 3 وثم قمنا باستخدام RemoveRange لحذف العناصر (0,1,2,3)

 

الوظيفة Insert& InsertRange

Insert : تستخدم لإضافة عنصر واحد في مكان محدد عن طريق index لـ ArrayList

InsertRange: تستخدم لإضافة Collection مثل Array داخل ArrayList ابتدائاً من عنصر محدد ويليه باقي العناصر عن طريق index

مثال :

2016-02-15_225600

لاحظ في المثال السابق أضفنا عناصر باستخدام Add,AddRange ولكن عند استخدام هاتين الوظيفتين يتم اضافة العناصر في اخر ArrayList ولكن عند استخدام Insert,InsertRange يتم اضافة العناصر في المكان المحدد (index) لأن ArrayList لديها امكانية التمدد والتقلص .

 

 

الوظيفة Reverse

 

الشكل الأول : تقوم على عكس ترتيب جميع العناصر وتستخدم بدون ارسال اي بارمترات

الشكل الثاني : تقوم على عكس ترتيب مجموعة من العناصر وذلك بتحديد البداية والنهاية وارسالها كبرامترات .

مثال :

 

 

الوظيفة TrimToSize

 

تقوم على حذف العناصر غير المستخدمة اي التي لا تحتوي على قيم وكأنها تطبق القاعدة التالية Capacity = Count

مثال :

لاحظ اننا حجزنا ArrayList تحتوي على 20 عنصر ولكننا لم نستعمل إلا 3 عناصر وعند استخدام TrimToSize يصبح Capacity = 3

 

الوظيفة IndexOf

تقوم على أرجاع index للقيمة المرسلة فإذا نرسل قيمة العنصر ويرجع لنا index الخاص بهذه القيمة (العنصر)

مثال :

سيظهر لنا على شاشة المخرجات رقم index الخاص بـ العنصر الذي يحمل القيمة “Ahmed” اي 0

 

الوظيفة Clear

تقوم على حذف جميع العناصر الموجودة بـ ArrayList

مثال :

 

الوصول إلى عناصر ArrayList

يمكن الوصول إلى عناصر ArrayList كما الحال مع Array وذلك عن طريق Index

مثال :

عند تنفيذ البرنامج سيظهر على شاشة المخرجات : 

First Element : Ahmed

Second Element : Khaled

Third Element : Mohmmoud

 

الوصول إلى عناصر ArrayList عن طريق جملة الدوران For

كما هو الحال في Array يمكننا الوصول إلى جميع عناصر المصفوفة ايضاً يمكننا ذلك مع ArrayList

مثال :

عند تنفيذ البرنامج سيظهر على شاشة المخرجات : 

 Ahmed            Khaled            Mohmmoud

 

الوصول إلى عناصر ArrayList عن طريق جملة الدوران foreach

كما هو الحال في Array يمكننا الوصول إلى جميع عناصر المصفوفة بإستخدام foreachايضاً يمكننا ذلك مع ArrayList

مثال :

ناتج تنفيذ البرنامج هو 

  Ahmed            Khaled            Mohmmoud

في حال كان نوع البيانات في العناصر مختلف (العنصر الأول int و العنصر الثاني string وهكذا ….) نستبدل نوع المتغير في جملة foreach ونضعها object

ناتج تنفيذ البرنامج هو 

  Ahmed            36.2            False

هنالك العديد من الوظائف الاخرى والتي يصعب علينا شرحها جميعاً في مقالة واحدة ، ولكن هذه اهم الوظائف التي يتم استخدامها مع ArrayList.

 

عن الكاتب

أحمد أبو فارس

احمد ابو فارس طالب جامعي يدرس علم الحاسوب في جامعة البلقاء التطبيقية مهتم في عالم التكنولوجيا , مبرمج يجيد العمل على عدة لغات , محترف تصميم ومونتاج ، وأحد اعضاء مجموعة شعاع والقائمين عليها.