
رسم بياني للمقارنة
أساس للمقارنة | قائمة | ArrayList |
---|---|---|
الأساسية | القائمة هي واجهة | ArrayList هو فئة جمع القياسية. |
بناء الجملة | قائمة واجهة | الطبقة ArrayList |
تمديد / تنفيذ | واجهة قائمة تمتد إطار مجموعة. | ArrayList يمتد AbstractList وينفذ واجهة القائمة. |
مساحة الاسم | System.Collections.Generic. | System.Collections. |
عمل | يتم استخدامه لإنشاء قائمة من العناصر (الكائنات) المرتبطة بأرقام فهرسها. | يتم استخدام ArrayList لإنشاء صفيف ديناميكي يحتوي على كائنات. |
تعريف القائمة
القائمة عبارة عن واجهة تعمل على توسيع إطار مجموعة العمل. تصف واجهة القائمة مجموعة العناصر التي يتم ترتيبها بالتسلسل. يتم تنفيذ واجهة القائمة بواسطة فئات المجموعة القياسية التالية مثل ArrayList ، LinkedList ، CopyOnWriteArrayList ، Vector ، Stack . تحتوي واجهة القائمة على عناصر مرتبطة بأرقام فهرسها. يمكنك الوصول إلى عنصر في القائمة حسب موضعه (فهرس) في القائمة. تبدأ القائمة التي تم إنشاؤها باستخدام واجهة القائمة بفهرس يستند إلى الصفر.
بالإضافة إلى الأساليب الموروثة من قبل إطار مجموعة ، تعرف واجهة القائمة أيضًا بعض الطرق الخاصة بها. الطرق المضافة بواسطة واجهة القائمة هي ، إضافة (int ، E) و addAll (int ، المجموعة) . تضيف هذه الطرق عنصرًا إلى القائمة حسب الفهرس الخاص بهم. قد بطرق أساليب داخل القائمة استثناء مثل UnsupportedOperationException إذا كان الأسلوب غير قادر على تعديل القائمة. عندما يكون كائن واحد في قائمة غير متوافق مع كائن آخر في القائمة ، ثم يتم طرح ClassCastException. غير مسموح بالعناصر الجديدة في القائمة إذا حاولت إدراج كائن فارغ في القائمة ، يتم طرح NullPointerException .
يمكنك الحصول على عنصر من القائمة باستخدام طريقة get () . يمكنك ضبط قيمة عنصر في القائمة باستخدام طريقة set () . يمكنك أيضًا الحصول على القائمة الفرعية من القائمة باستخدام القائمة الفرعية للطريقة () . يصبح ملائما للعمل على القائمة الفرعية بدلا من قائمة.
تعريف ArrayList
واحدة من فئات المجموعة القياسية هي ArrayList التي تمتد فئة AbstractList وتطبق أيضا واجهة القائمة . يتم استخدام فئة ArrayList لإنشاء المصفوفات الحيوية التي تنمو وتتقلص كلما لزم الأمر. القائمة التي تم إنشاؤها باستخدام فئة ArrayList ليست سوى صفيف الكائنات. في Java ، الصفيف القياسي له طول ثابت ، لذا ، يجب أن تعرف حجم الصفيف مقدمًا. ولكن ، قد تكون الحالة أنك قد لا تعرف طول الصفيف الذي تحتاجه حتى وقت التشغيل. ومن ثم ، قدم إطار جمع طبقة ArrayList للتغلب على هذه المسألة.
يحتوي ArrayList على منشئات تقوم بإنشاء المصفوفة بسعة intial الخاصة بها. على الرغم من أن سعة كائن الفئة ArrayList تزداد تلقائيًا عند إضافة عناصر إلى الصفيف ، ما زال يمكنك زيادة سعة كائن ArrayList يدويًا باستخدام طريقة ضمان السعة () . من الأفضل زيادة سعة الصفيف بدلاً من إعادة تخصيص الذاكرة لاحقاً. لأن إعادة تخصيص التكلفة أكثر تكلفة من تخصيص الذاكرة دفعة واحدة.
الاختلافات الرئيسية بين قائمة و ArrayList
- أحد الاختلافات الأكثر أهمية بين القائمة و ArrayList هو أن القائمة هي واجهة و ArrayList هو فئة مجموعة قياسي.
- واجهة القائمة تمدد إطار المجموعة بينما ، ArrayList يمتد Class AbstractList ويقوم بتطبيق واجهات قائمة .
- مساحة الاسم لواجهة قائمة هي System.Collection.Generic بينما ، مساحة اسم ArrayList هي System.Collection .
- تنشئ واجهة القائمة مجموعة من العناصر المخزنة في تسلسل ويتم تحديدها أو الوصول إليها برقم فهرستها. من ناحية أخرى ، يقوم ArrayList بإنشاء صفيف من الكائنات حيث يمكن للمصفوفة أن تنمو بشكل ديناميكي عند الحاجة.
استنتاج:
يتغلب ArrayList على مسألة صفيف ثابت في Java القياسي أي أن الصفيف لا يمكن أن ينمو بالحجم بمجرد إنشائه. عندما يتم إنشاء مصفوفة باستخدام ArrayList ، يتم إنشاء مصفوفة ديناميكية يمكن أن تنمو وتتقلص في الحجم عند الحاجة. توسيع مجموعة Class ArrayList القياسية واجهة القائمة.