الفرق بين ArrayList و LinkedList في جافا

مؤلف: Laura McKinney
تاريخ الخلق: 3 أبريل 2021
تاريخ التحديث: 15 قد 2024
Anonim
LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka
فيديو: LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka

المحتوى


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

دعونا نناقش بعض الاختلافات بين ArrayList و LinkedList بمساعدة مخطط المقارنة الموضح أدناه.

  1. رسم بياني للمقارنة
  2. فريف
  3. الاختلافات الرئيسية
  4. استنتاج

رسم بياني للمقارنة

أساس للمقارنةArrayListقائمة متصلة
الأساسية ArrayList يسمح بالوصول العشوائي إلى العناصر في القائمة.لا يسمح LinkedList بالوصول العشوائي إلى العناصر الموجودة في القائمة.
هيكل البياناتالبنية الداخلية المستخدمة لتخزين العناصر هي مجموعة ديناميكية.البنية الداخلية المستخدمة لتخزين العناصر هي قائمة روابط مضاعفة.
يمتدArrayList يمتد AbstarctList الطبقة.LinkedList يمتد AbstractSequentialList.
تطبيقاتAbstractList تنفذ واجهة القائمة.LinkedList تنفذ قائمة ، Deque ، قائمة الانتظار.
التمكن من الوصول إلى العناصر في القائمة أسرع في ArrayList.الوصول إلى العناصر في القائمة أبطأ في LinkedList.
بمعالجةالتلاعب بالعناصر الموجودة في القائمة يكون أبطأ في ArrayList.يتم التعامل مع العناصر الموجودة في القائمة بشكل أسرع في LinkedList.
سلوكيتصرف ArraylList كقائمة لأنه ينفذ القائمة.يتصرف LinkedList كقائمة بالإضافة إلى قائمة الانتظار كما أنها تنفذ قائمة وقائمة الانتظار على حد سواء.


تعريف ArrayList

ال AbstractList يتم تعريف الطبقة من قبل إطار جمع. انها تمتد AbstarctList وينفذ قائمة جهة تعامل. يستخدم ArrayList مجموعة ديناميكية أي صفيف الطول المتغير كهيكل بيانات داخلي لتخزين العناصر في القائمة. تنشأ الحاجة إلى ArrayList لأن الصفيف في java ذو طول ثابت. لذلك لا يمكن أن ينمو أو يتقلص في الحجم حيث يتم إضافة العناصر أو حذفها من الصفيف. لذلك عليك أن تعرف حجم الصفيف المطلوب مقدما. لكن قائمة الصفيف المطبقة باستخدام فئة ArrayList يمكن أن تنمو وتقلص في الحجم حيث يتم إضافة العناصر أو حذفها من الصفيف.

يمكن الوصول إلى قائمة الصفيف تنفيذها باستخدام ArrayList بطريقة عشوائية كما ArrayList يعمل على أساس الفهرس. لذلك معرفة الفهرس يمكنك الوصول مباشرة إلى eleemnt من القائمة. هناك ثلاثة منشئي ArrayList:

ArrayList () ArrayList (Collection <؟ يمتد E> c) ArrayList (int capacity)

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


تعريف LinkedList

مثل ArrayList ، قائمة متصلة هو أيضا مجموعة يستخدم الطبقة قائمة مرتبطة مضاعفة كهيكل بيانات داخلي لتخزين العناصر في القائمة. تمتد فئة LinkedList AbstractSequentialList وينفذ قائمة, صف مزدوج الذيل و طابور واجهات. لا يمكن الوصول إلى القائمة المرتبطة المنفذة باستخدام LinkedList بشكل عشوائي. إذا كنت ترغب في استرداد أي عنصر من القائمة ، فيجب عليك تكرار القائمة للبحث في هذا العنصر.

هناك نوعان من المنشئات في فئة LinkedList.

LinkedList () LinkedList (مجموعة <؟ يمتد E> c)

ال أول المنشئ بإنشاء قائمة مرتبطة فارغة. ال ثانيا منشئ ينشئ قائمة مرتبطة ، مع تهيئة عناصر من مجموعة ج.

في LinkedList ، التلاعب بالقائمة سهل وسريع. هذا لأنه إذا قمت بإضافة أو حذف أي عنصر في القائمة ، فلا داعي لتغيير العناصر كما في ArrayList. لكن الوصول أبطأ لأنه لا يحتوي على فهرس للوصول مباشرة إلى العناصر.

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

استنتاج:

عندما يكون هناك إضافة أو حذف متكرر للعناصر في القائمة ، يجب استخدام LinkedList لأنه يعمل بشكل أفضل أثناء المعالجة. إذا تم تطبيق البحث المتكرر على القائمة ، فإن ArrayList هو الخيار الأفضل ، حيث إنه يعمل بشكل أفضل أثناء الوصول إلى عناصر من القائمة.