الفرق بين ArrayList والمتجهات في جافا
المحتوى
ArrayList و Vector كلاهما الفئات تحت التسلسل الهرمي Framework Framework. يتم استخدام كل من ArrayList و Vector لإنشاء صفيف ديناميكي من الكائنات حيث يمكن أن تنمو الصفيف في الحجم عند الاقتضاء. هناك اختلافان أساسيان يميزان ArrayList و Vector هو أن Vector ينتمي إلى فئات Legacy التي أعيد تصميمها لاحقًا لدعم فئات المجموعة ، بينما ArrayList هي فئة تجميع قياسية. اختلاف مهم آخر هو أن ArrayList غير متزامن من ناحية أخرى ؛ متزامن متزامن.
دعنا ندرس بعض الاختلافات الأخرى بمساعدة مخطط المقارنة الموضح أدناه.
- رسم بياني للمقارنة
- تعريف
- الاختلافات الرئيسية
- التشابه
- خاتمة
رسم بياني للمقارنة
أساس للمقارنة | ArrayList | قوه موجهة |
---|---|---|
الأساسي | فئة ArrayList غير متزامنة. | تتم مزامنة فئة المتجهات. |
الطبقة القديمة | ArrayList هي فئة قياسية قياسية. | Vector عبارة عن فئة قديمة ، أعيد تصميمها لدعم فئة التجميع. |
إعلان الفصل | الطبقة ArrayList | ناقلات الطبقة |
إعادة توزيع | عندما لا يتم تحديد قائمة ArrayList بمقدار نصف حجمها. | عندما لا يتم تحديد ذلك ، يتم زيادة المتجه لمضاعفة حجمه. |
أداء | نظرًا لأن ArrayList غير متزامن ، فإنه يعمل بشكل أسرع من Vector. | كما تتم مزامنة Vector ، يعمل بشكل أبطأ من ArrayList. |
التعداد / مكرر | يستخدم ArrayList واجهة Iterator لاجتياز الكائنات المخزنة في ArrayList. | يستخدم Vector التعداد وكذلك واجهة Iterator لاجتياز الكائنات المخزنة في المتجهات. |
تعريف ArrayList
ينتمي ArrayList إلى قائمة فئات المجموعة القياسية. يتم تعريف فئة ArrayList داخل java.util الحزمة ، ويمتد AbstractList فئة والتي هي أيضا فئة جمع القياسية ، وينفذ أيضا قائمة، واجهة محددة في واجهات المجموعة. في Java ، يكون الصفيف القياسي دائمًا بطول ثابت. وهذا يعني بمجرد إنشاء ؛ أنها لا تنمو بشكل ديناميكي أو يتقلص في الحجم. لذلك ، يجب أن يكون لديك معرفة مسبقة بطول الصفيف الذي تستخدمه. ولكن ، في بعض الأحيان قد يحدث أن يتم الكشف عن الطول المطلوب في وقت التشغيل لذلك ، للتعامل مع هذا النوع من الحالات التي قدمت java ArrayList.
ArrayList هي فئة تستخدم لإنشاء ديناميكي لصفيف يحتفظ بالإشارات إلى الكائنات. يمكن أن تنمو هذه المجموعة في الحجم عند الاقتضاء. إعلان الفصل على النحو التالي:
الطبقة ArrayList هنا ، تحدد E نوع الكائنات التي ستحتوي عليها مجموعة. الصفيف الذي تم إنشاؤه بطول متغير ، ويزيد وينقص في الحجم عند إضافة كائنات أو إزالتها من القائمة. ArrayList غير متزامن وهذا يعني ، يمكن أن تعمل أكثر من مؤشر ترابط على الصفيف في نفس الوقت. على سبيل المثال ، إذا كان مؤشر ترابط واحد يضيف مرجع كائن إلى الصفيف ويقوم مؤشر ترابط آخر بإزالة مرجع كائن من نفس الصفيف في نفس الوقت. إنشاء صفيف ديناميكي باستخدام فئة ArrayList: ArrayList في الكود أعلاه ، يمكنك أن ترى ذلك ؛ أنا خلقت مجموعة من الكائنات من نوع السلسلة. أضفت بعض الكائنات إلى الصفيف S1 باستخدام طريقة add () ، ثم قمت بحذف بعض الكائنات باستخدام طريقة remove (). يمكنك ملاحظة ما إذا كنت لا تحدد الحجم الأولي للصفيف وسيكون طوله "0". كما يمكنك رؤية الصفيف ينمو ويتقلص في الحجم أثناء إضافة العناصر وحذفها. Vector عبارة عن فئة Legacy تم إعادة تصميمها لدعم فئة المجموعة في التسلسل الهرمي Framework Collection. يتم تعريف فئة ناقل أيضا في java.util حزمة ، مدد بواسطة AbstractList الطبقة وتنفيذها من قبل قائمة واجهه المستخدم. يتم تعريف فئة Vector كالتالي: ناقلات الطبقة هنا ، يعرّف E نوع الكائن الذي سيتم تخزينه في صفيف. صفيف تم إنشاؤه باستخدام فئة Vector متغيرة الطول. يزيد ضعف حجمه إذا لم يتم تحديد الزيادة. دعونا نفهم إنشاء مجموعة باستخدام Vector. قوه موجهة في التعليمة البرمجية أعلاه ، يمكنك رؤية ذلك ، وقد ذكرت بشكل خاص حجم وقيمة الزيادة في مُنشئ Vector على التوالي ، أثناء إعلان مجموعة كائنات السلسلة. وبالتالي ، يمكنك ملاحظة أنه عند انتهاء حد المصفوفة ، فإنه يزداد حسب القيمة المقدمة إلى المنشئ أثناء التصريح. أختتم بالقول إن استخدام ArrayList أفضل من استخدام Vector لأنه يعمل بشكل أسرع وأفضل.
تعريف المتجهات
التشابه:
خاتمة: