Arraylist مقابل Vector
يمكن اعتبار المصفوفة كمصفوفة ديناميكية ، والتي يمكن أن تنمو في الحجم. لهذا السبب ، لا يحتاج المبرمج إلى معرفة حجم المصمم عند تحديده. يمكن أيضًا اعتبار المتجه كمصفوفة يمكن أن تنمو في الحجم. يمكن تخصيص المتجهات بسهولة ويمكن استخدامها عندما لا يكون الحجم المطلوب للتخزين معروفًا حتى وقت التشغيل.
ما هو Arraylist؟
يمكن اعتبار المصفوفة كمصفوفة ديناميكية ، والتي يمكن أن تنمو في الحجم. لذلك ، يعد المصممون الأصليون مثاليين لاستخدامهم في المواقف التي لا تعرف فيها حجم العناصر المطلوبة في وقت الإعلان.في Java ، يمكن للمصفوفين الاحتفاظ بالكائنات فقط ، ولا يمكنهم الاحتفاظ بأنواع بدائية مباشرة (يمكنك وضع الأنواع الأولية داخل كائن أو استخدام فئات التضمين للأنواع الأولية). بشكل عام ، يتم تزويد مصففي الصفوف بطرق لأداء الإدراج والحذف والبحث. التعقيد الزمني للوصول إلى عنصر هو o (1) ، بينما يحتوي الإدراج والحذف على تعقيد زمني لـ o (n). في Java ، يمكن اجتياز المصفوفين الموجودين باستخدام حلقات foreach أو التكرارات أو ببساطة باستخدام الفهارس. في Java ، تم تقديم Arraylists من الإصدار 1.2 وهو جزء من Java Collections Framework.
ما هو المتجه؟
Vector هو أيضًا مصفوفة يمكن أن تنمو في الحجم. يمكن تخصيص المتجهات بسهولة ويمكن استخدامها عندما لا يكون الحجم المطلوب للتخزين معروفًا حتى وقت التشغيل. يمكن للمتجهات أيضًا الاحتفاظ بالكائنات فقط ولا يمكنها الاحتفاظ بأنواع بدائية. النواقل متزامنة ، وبالتالي يمكن استخدامها بأمان في بيئات ذات مؤشرات ترابط متعددة. يتم تزويد المتجهات بأساليب لإضافة كائنات وحذف كائنات وكائنات بحث.على غرار Arraylist في جافا ، يمكن اجتياز المتجهات باستخدام حلقات foreach أو التكرارات أو ببساطة باستخدام الفهارس. عندما يتعلق الأمر بـ Java ، فقد تم تضمين المتجهات منذ الإصدار الأول من Java.
ما هو الفرق بين Arraylist و Vector؟
على الرغم من أن كلا من المصفوفات والمتجهات متشابهة جدًا مع المصفوفات الديناميكية التي يمكن أن تنمو في الحجم ، إلا أن لديهم بعض الاختلافات المهمة. الفرق الرئيسي بين المتجهات والمتجهات هو أن المتجهات متزامنة في حين أن المتجهات غير متزامنة. لذلك لن يكون استخدام مصففي الصفوف في البيئات متعددة مؤشرات الترابط مناسبًا ، بينما يمكن استخدام المتجهات بأمان في البيئات متعددة مؤشرات الترابط (نظرًا لأنها آمنة في الخيط). لكن التزامن في النواقل قد يؤدي إلى انخفاض في الأداء. لذلك لن يكون من الجيد استخدام المتجهات في بيئة مترابطة واحدة. داخليًا ، يستخدم كل من المصفوفين والمتجهات المصفوفات للاحتفاظ بالكائنات. عندما لا تكون المساحة الحالية كافية ، فإن المتجهات ستضاعف حجم صفيفها الداخلي ، بينما يزيد المصفوفون حجم صفيفها الداخلي بنسبة 50٪.ولكن عند استخدام كل من المصفوفات والمتجهات ، من خلال إعطاء سعة أولية مناسبة ، يمكن تجنب تغيير الحجم غير الضروري للمصفوفة الداخلية. في حالة معرفة معدل نمو البيانات ، سيكون استخدام المتجهات أكثر ملاءمة حيث يمكن تحديد القيمة المتزايدة للمتجهات.