بسم الله الرحمن الرحيم
راح اتكلم في هذه الموضوع عن Data Structureوسأشرح فيها Collection Interfaca وبإذن الله تكون مدخل وشرح واضح فيه
أول سؤال ممكن يكون على بالك أن هل الـ Data Structure لها علاقة بالـ Database ام لا ؟
الإجابة لا ، هناك فرق بين ما يعرف بقواعد البيانات Database ، وبين مفهوم هياكل(تراكيب)البيانات Data Structure .
قواعد البيانات هي عملية تخزين البيانات .
أما هياكل البيانات هي اللي تحتاجها لأداء برنامج بكفاءة عالية في وقت التنفيذ (خلال الـ runtime).
بمعنى أوضح قواعد البيانات أنت تخزن فيها البيانات لأجل أنك لو أغلقت الكمبيوتر تجي اليوم الثاني تلقاها موجودة .
فيه فرق بين تخزين بيانات وبين بيانات حية في الذاكرة للتعامل معها .
في البرنامج عادة العمليات التي تتم في RunTime تتم على Data Structure.
هياكل البيانات باختصار هي تحليل شكل البيانات شلون تكون داخل الاوبجيكت ونستخدمها لجمع البيانات وترتيبها وتنظيمها ...
في جافا فيه اوبجيكت جاهزة لك أنك تستخدمها على طول يعني ما يحتاج تعيد كتابة كل شئ من الصفر مثل ما هو في C و ++C ، كذلك نتكلم
عن أن هياكل البيانات يأتي معها خوارزميات للترتيب وإعادة الترتيب وصياغة أجزاء البيانات الموجودة ، وهذه الخوارزميات موجودة مع
الاوبجيكت يعني مضغوطة مع الاوبجيكت او الانترفيس اللي راح نتكلم عنه الآن .
مركز العمليات هو انترفيس interface رهيب جداً هو الـ Collection .
الشكل الأساسي للCollection interface هو أنه يتفرع منه اثنين من الـ interface : وهي Set و List .
Set معناها مجموعة من الأشياء أو البيانات لا يوجد فيها تكرار ، واذا جيت في المقالة القادمة بإذن الله سأبين انه ما هو شرط انها
ما تقبل التكرار اذا كان ConCrete Class لازم تعرف فيه الـ Two Methode الموجوده في كل اوبجيكت اللي هي equals و hashcode .
List معناها مجموعة من الأشياء والبيانات وتسمح بالتكرار وبمزايا أخرى راح نعرفها في وقتها .
أيضا يوجد الـ Map Interfaca لكنه ليس من Collection فهو جسم برمجي آخر عبارة عن دمج جسمين مع بعض .
نقطة مهمه أن هذه الانترفيس Set و List لا يمكن انك تسوي منها اوبجيكت يعني ما تقدر تسوي من عندها new مثلا new Set أو new List ،
لأنها كأي انترفيس لا تستطيع ان تنشأ منه اوبجيكت والدوال اللي فيه تطبقها كلاسات ConCrete يعني اوبجيكت جاهزة للاستخدام فتستطيع
إذا تبي :
Set تقدر تستعمل أما HashSet أو TreeSet المطبِّقان له .
List تقدر تستعمل أما ArrayList أو LinkedList .
Map تقدر تستعمل HashMap أو TreeMap .
Tree معناتها Sorted يعني مرتبة حسب ترتيب معين انت حددته سابقاً .
ملاحظة : أني اتكلم الآن عن الشكل الأساسي أما الآن في الـ Collection فيه انترفيس جديد Queue وفي Set و List كلاسات أخرى جاهزة
للاستخدام غير اللي ذكرتهم . يمكنك مشاهدة الصورة في آخر المقالة وتشاهد Collection وتفرعاته .
لو أخذنا الشكل الأساسي بشكل مكبر قليلاً نشوف أن Collection مرتبط في شئ اسمه Iteratable و Iterate يعني انه قابل انه يدور
وايضاً عندي من Iteratable Interface اوبجيكت اسمه --> Iterator وهذا الاوبجيكت اقدر استدعيه عن طريق الكونستراكتور Constructor .
Iteratable Interface :
يوجد فيه عملية واحدة فقط اللي هي (()Iterator كونستراكتور) ، يوجد في الاوبجيكت أو كلاس Iterator ثلاث عمليات :
()boolean hasNext
لأجل تحديد الوجه للوب Loop .
()boolean next
يعطيك الأوبجيكت التالي
;()void remove
اذا تبغى تشيل (تحذف) كائن .
أول شئ الـ collection interface من الباكيج java.util .
.
ندخل الآن في عمليات الـ collection interface :
1_ Informative Methods تحتوي على :
()Iterator Iterator
عرفناها فوق
()boolean isEmpty
هنا نسأل هل الكولكشن collection فاضي ويرجع لنا true Or false) boolean)
()int size
يرجع لنا الحجم .
2_ Object Based Methods :
(boolean equals(Object o
نستعلمها في المقارنة بين اثنين من الكولكشن .
()int hashCode
يرجع لنا الرقم الخاص بالاوبجيكت .
3_ Element Based Methods :
(boolean add(Object o
إذا ابغى اضيف كائن .
(boolean remove(Object o
إذا ابغى احذف كائن .
(boolean contins(Object o
إذا اشيك هل تحتوي على .
4_ Output To Arrays Methods :
()Object[] toArray
إذا خلصت من الأوبجيكت وابغى احوله إلى ِArrays .
( Object[] toArray(Object[] o
نفسها لكنها تحول مصفوفة وترجعها لنا .
5_ Collection Based Methods :
هذي عمليات خاصة بين كولكشن وكلوكشن مثلا A و B .
(boolean addAll(Collection c
تعطي كولكشن تضاف بالكامل على الكولكشن المراده .
(boolean containsAll(Collection c
مثلا هل A تحتوي على كل عناصر B .
(boolean removeAll(Collection c
أنا ممكن اقوله B removeAll A فسيحذف كل العناصر غير الموجودة أو المشتركة .
()void clear
راح بنظف A يعني راح يفضيها من الداخل.
(boolean retainAll(Collection c
هنا نقوله حافظ على اللي موجود في A و B .
هنا اتوقف وإن شاء الله الشرح يكون واضح وبإذن الله في أقرب فرصة اني اكون فاضي راح اكمل Data Structure ونأخذ Set و List والكلاسات المطبقه لها بالتفصيل .
ووفق الله الجميع لكل خير وللعلم النافع ..
(مفرّغ من مقاطع يوتيوب)