Zeina Almakdisi نشر 26 ديسمبر 2021 أرسل تقرير نشر 26 ديسمبر 2021 (معدل) ما هي أهمية استخدام الكلاس Vector بالمقارنة مع المصفوفات العادية ؟؟ تم التعديل في 26 ديسمبر 2021 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
1 Wael Aljamal نشر 26 ديسمبر 2021 أرسل تقرير نشر 26 ديسمبر 2021 المصفوفة العادية هي كائن برمجي يحوي عدد ثابت من العناصر ويتم تحديد عدد العناصر عن كتابة البرنامج بقيمة ثابتة (أو ضمن متغير)، فمن المساوئ الناتجة هي: حجز عدد عناصر أكبر من اللازم مما يؤدي لحجز ذاكرة بشكل غير ضروري حجز عدد أقل من اللازم وهنا لا يمكن تخزين العناصر الأخرى Vector هو صنف يسمح بتعريف مصفوفات ديناميكية الحجم أي تحوي عدد متغير من العناصر، أي عند التهيئة يمكن إنشاء مصفوفة Vector بطول 0 ثم إضافة العناصر إليها حسب الطلب، أو حتى إضافة عناصر لمصفوفة Vector قد تم إنشائها مسبقاً باستخدام التابع ADD، نلاحظ أن عدد العناصر غير ثابت، ويمكن حذف العناصر بالتابع remove والحصول على قيمة عنصر من التابع get يمكن الحصول على مثال من السؤال: 1 اقتباس
0 شرف الدين حفني نشر 27 ديسمبر 2021 أرسل تقرير نشر 27 ديسمبر 2021 بالإضافة إلى إجابة وائل فإن يوجد إختلاف مهم بين الvector(المتجه) والمصفوفة array في جافا وهو أن المتجه متزامن synchronized مما يعني أن لا يمكن لأكثر من thread أن يقومو بعمليات عل نفس المتجه وتلك الخاصية لها ميزتها وعيبها في ذات الوقت المميزات المميزات أنه يضمن لنا عدم حدوت تصادم في البيانات عند محاولة الكتابة على المتجه من قِبل أكثر من thread ويمكن توضيح المقصد من هذا الكلام عبر المثال التالي: نفترض أن لدينا ملف كبير الحجم نقوم بقرائته من قبل نسختين من الthread بشكل متقطع بحيث يقوم كل ثريد بقراءة 5 ميجا ومن ثم يتم كتابتها في هيكل بيانات ومن ثم يرجع يقرأ 5ميجا أخرى ومن ثم يقوم بكتابتهم في الهيكل وهكذا إن كنا نستخدم مصفوفة يوجد إحتمالية أن يكتب الthread الأول والثاني في الكتابة في الفهرس رقم 3 في نفس الوقت مما يؤدي إلى مسح بيانات أحدهم وبالتالي يكون لدينا فقد في البيانات, ولكن مع المتجه لن يستطيع أن يكتب إلا thread واحد فقط, بينما الthread الأخر سينتظر لحين إنتهاء الthread الأول من الكتابة ومن ثم يقوم بالكتابة في الفهرس القادم مما يضمن لنا عد حدوث أي فقدان في البيانات العيوب بما أنه كما قلنا متزامن ولا يسمح لأكثر من نسخة thread من الكتابة في نفس الوقت فهذا يسبب بطئ في الأداء فبالتالي إن كنا لا نحتاج إلى ضمان عدم فقدان البيانات ونتعامل مع أكثر من thread فبالتالي لن نحتاج التعامل مع المتجه لأنه سيؤدي إلى فقدان في الأداء مقابل ميزة لا نحتاجها بالإضافة إلى أن المتجه يأخذ مساحة أكبر في الذاكرة 1 اقتباس
السؤال
Zeina Almakdisi
ما هي أهمية استخدام الكلاس Vector بالمقارنة مع المصفوفات العادية ؟؟
تم التعديل في بواسطة Wael Aljamalتوضيح السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.