الفرق بين ArrayList و Vector
أوجه التشابه:
1. ArrayList و Vector على حد سواء يرثون نفس الفئة الأصل وتنفيذ نفس الواجهة.
2. يتم تنفيذ الطبقة السفلية بواسطة المصفوفات
3. الطول الافتراضي الأولي هو 10.
الاختلافات:
1. التزامن:
تضيف معظم الطرق العامة في المتجه كلمة رئيسية متزامنة لضمان مزامنة الطرق ، أي ، آمن مؤشر ترابط المتجه ، وخيط ArrayList غير آمن.
2. توسع مختلف
قد تكون الخصائص الداخلية المختلفة هي سبب طرق التحجيم المختلفة.
يحتوي ArrayList على خصائصين ، Array ElementData التي تخزن البيانات ، والحجم الذي يخزن عدد السجلات.
يحتوي Vector على ثلاث خصائص: elementData الصفيف الذي يخزن البيانات ، وعنصر العنصر الذي يخزن عدد السجلات ، وسعة عامل التوسع التي توسع حجم الصفيف.
طريقة تمديد ArrayList
//jdk1.8.0_91private void تنمو (int mincapacity) {// الكود الفائض الواعي int OldCapacity = elementData.Length ؛ int newCapacity = OldCapacity + (OldCapacity >> 1) ؛ if (newCapacity - minicapacity <0) newCapacity = mincapacity ؛ if (newCapacity - max_array_size> 0) newCapacity = hugecapacity (mincapacity) ؛ // عادة ما تكون Mincapacity قريبة من الحجم ، لذلك هذا هو الفوز: elementData = Arrays.copyof (ElementData ، NewCapacity) ؛ }يمكن ملاحظة أنه عند استيفاء حالة التوسع ، يكون حجم الصفيف الممتد 1.5 ضعف طول الصفيف الأصلي وأكبر المعلمات التي تم تمريرها.
طريقة تمديد المتجه
//jdk1.8.0_91private void تنمو (int mincapacity) {// الكود الفائض الواعي int OldCapacity = elementData.Length ؛ int newCapacity = OldCapacity + ((courceincrement> 0)؟ cubleincrement: OldCapacity) ؛ if (newCapacity - minicapacity <0) newCapacity = mincapacity ؛ if (newCapacity - max_array_size> 0) newCapacity = hugecapacity (mincapacity) ؛ elementData = arrays.copyof (elementData ، newCapacity) ؛ }يمكن ملاحظة أنه عندما يكون عامل التمدد أكبر من 0 ، فإن طول الصفيف الجديد هو طول الصفيف الأصلي + عامل التمدد ، وإلا فإن طول الصفيف الجديد الجديد هو ضعف طول الصفيف الأصلي. قارن طول الصفيف الجديد الذي تم إنشاؤه أعلاه مع طول المعلمة المرتفع ، والطول الأكبر هو الطول الجديد.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!