logo

الفرق بين ArrayList وLinkedList

يقوم كل من ArrayList وLinkedList بتنفيذ واجهة القائمة والحفاظ على ترتيب الإدراج. كلاهما فئات غير متزامنة.

لم يتم التعرف على جافاك

ومع ذلك، هناك العديد من الاختلافات بين فئتي ArrayList وLinkedList الموضحة أدناه.

ArrayListقائمة مرتبطة
1) يستخدم ArrayList داخليًا ملف مجموعة ديناميكية لتخزين العناصر.يستخدم LinkedList داخليًا ملف قائمة مرتبطة بشكل مضاعف لتخزين العناصر.
2) التلاعب مع ArrayList هو بطيء لأنه يستخدم مصفوفة داخليًا. إذا تمت إزالة أي عنصر من المصفوفة، فسيتم نقل جميع العناصر الأخرى في الذاكرة.التلاعب مع LinkedList هو أسرع من ArrayList لأنه يستخدم قائمة مرتبطة بشكل مزدوج، لذلك لا يلزم تغيير البت في الذاكرة.
3) يمكن لفئة ArrayList بمثابة قائمة فقط لأنه ينفذ القائمة فقط.يمكن لفئة LinkedList بمثابة قائمة وقائمة الانتظار كلاهما لأنه يطبق واجهات List وDeque.
4) قائمة ArrayList هي أفضل للتخزين والوصول بيانات.القائمة المرتبطة هي أفضل للتلاعب بيانات.
5) موقع الذاكرة لعناصر ArrayList مجاور.موقع عناصر القائمة المرتبطة ليس معديًا.
6) بشكل عام، عند تهيئة ArrayList، يتم تعيين سعة افتراضية قدرها 10 إلى ArrayList.لا توجد حالة للسعة الافتراضية في LinkedList. في LinkedList، يتم إنشاء قائمة فارغة عند تهيئة LinkedList.
7) على وجه الدقة، ArrayList عبارة عن مصفوفة يمكن تغيير حجمها.ينفذ LinkedList القائمة المرتبطة بشكل مزدوج لواجهة القائمة.

مثال على ArrayList وLinkedList في Java

دعونا نرى مثالاً بسيطًا حيث نستخدم ArrayList وLinkedList معًا.

اسم الملف: TestArrayLinked.java

 import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } } 
اختبره الآن

انتاج:

arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid] 

نقطة لنتذكر

فيما يلي بعض النقاط المهمة التي يجب تذكرها بخصوص ArrayList وLinkedList.

  • عندما يكون معدل الإضافة أو الإزالة أكثر من سيناريوهات القراءة، فانتقل إلى LinkedList. من ناحية أخرى، عندما يكون تكرار سيناريوهات القراءة أكبر من معدل الإضافة أو الإزالة، فإن ArrayList تكون له الأسبقية على LinkedList.
  • نظرًا لأن عناصر ArrayList يتم تخزينها بشكل أكثر إحكاما مقارنة بـ LinkedList؛ لذلك، تعد ArrayList أكثر ملاءمة لذاكرة التخزين المؤقت مقارنة بـ LinkedList. وبالتالي، تكون فرص فقدان ذاكرة التخزين المؤقت أقل في قائمة ArrayList مقارنة بقائمة LinkedList. بشكل عام، يعتبر أن LinkedList ضعيف في منطقة ذاكرة التخزين المؤقت.
  • يعد الحمل الزائد للذاكرة في LinkedList أكبر مقارنةً بـ ArrayList. وذلك لأنه، في LinkedList، لدينا رابطان إضافيان (التالى والسابق) حيث أنه مطلوب لتخزين عنوان العقد السابقة والتالية، وهذه الروابط تستهلك مساحة إضافية. مثل هذه الروابط غير موجودة في ArrayList.