LinkedList مقابل ArrayList في Java: تعرف على الاختلافات الرئيسية



ستمنحك مقالة LinkedList مقابل ArrayList هذه مقارنة مناسبة بين القوائم التي تنفذ واجهة القائمة

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

فيما يلي الموضوعات التي تم تناولها في هذه المقالة:





هيا نبدأ!

ما هو LinkedList؟

بعد المصفوفات ، ثاني أكثر بنية البيانات شيوعًا هو بالتأكيد ملف . القائمة المرتبطة هي بنية بيانات خطية تتكون من ملفسلسلة من العقد حيث تحتوي كل عقدة على قيمة و aالمؤشرإلى العقدة التالية في السلسلة.أيضا ، ريشير آخر رابط في قائمة مرتبطة إلى قيمة خالية ، مما يشير إلى نهاية السلسلة.عنصر في قائمة مرتبطة يسمى العقدة .العقدة الأولى في القائمة تسمى رئيس .العقدة الأخيرة تسمى ذيل .



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

ترتيب المصفوفات c ++

مثال:

package MyPackage import java.util.LinkedList import java.util.ListIterator public class linkedlist {public static void main (String args []) {/ * Linked List Statement * / LinkedListl_list = new LinkedList () / * add (String Item) is تستخدم لإضافة * العناصر إلى القائمة المرتبطة * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( 'محتوى القائمة المرتبط: '+ l_list) / * إضافة عناصر في الموضع المحدد * / l_list.add (2،' JavaScript ') l_list.add (3،' Kotlin ') System.out.println (' l_list Content بعد التحرير: '+ l_list) / * إضافة العنصر الأول والأخير * / l_list.addFirst (' الدورة الأولى ') l_list.addLast (' الدورة التدريبية الأخيرة ') System.out.println (' l_list المحتوى بعد الإضافة: '+ l_list) / * احصل وقم بتعيين العناصر في القائمة * / Object firstvar = l_list.get (0) System.out.println ('العنصر الأول:' + firstvar) l_list.set (0، 'Java9') System.out.println ('l_list Content بعد تحديث العنصر الأول: '+ l_list) / * إزالة من موضع * / l_list.remove (1) l_list.remove (2) System.out.println ('LinkedList بعد حذف العنصر في المركزين الثاني والثالث' + l_list) / * إزالة العنصر الأول والأخير * / l_list.removeFirst () l_list.removeLast () System.out.println ('المحتوى النهائي بعد إزالة العنصر الأول والأخير : '+ l_list) / * تكرار القائمة المرتبطة * / ListIteratoritrator = l_list.listIterator () System.out.println (' القائمة المعروضة باستخدام المكرر: ') while (itrator.hasNext ()) {System.out.println (itrator) .التالى()) } } }

انتاج:



محتوى القائمة المرتبط = {Java، Python، Scala، Swift} المحتوى بعد التحرير = {Java، Python، JavaScript، Kotlin، Scala، Swift} المحتوى بعد الإضافة = {First Course، Java، Python، JavaScript، Kotlin، Scala، Swift، Last Course} First Item = {First Course} المحتوى بعد تحديث العنصر الأول = {Java9، Java، Python، JavaScript، Kotlin، Scala، Swift، Last Course} المحتوى بعد حذف العنصر في المركزين الثاني والثالث = {Java9، Python، Kotlin، Scala، Swift، Last Course} المحتوى النهائي بعد إزالة العنصر الأول والأخير = {Python، Kotlin، Scala، Swift} قائمة معروضة باستخدام iterator = Python Kotlin Scala Swift

الآن ، دعنا ننتقل إلى الموضوع التالي.

ما هي ArrayList؟

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

LinkedList-vs-ArrayList-in-Java-Edureka

يتم استخدام ArrayList لهذه الأغراض:

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

دعونا نمضي قدمًا ونشير إلى أوجه التشابه بين LinkedList و ArrayList في Java.

أوجه التشابه بين LinkedList و ArrayList

هذه هي أوجه التشابه الملحوظة بين LinkedList و ArrayList في Java.

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

الاختلافات بين LinkedList و ArrayList

أولاً ، دعنا نلقي نظرة على المعلمات لمقارنة LinkedList مقابل ArrayList في Java.

معلمات لمقارنة LinkedList و ArrayList في Java:

  • عملية
  • التنفيذ
  • معالجة
  • ذاكرة
  1. عمليات

تكون عمليات الإدراج والإضافة والإزالة لعنصر ما أسرع في ملف لينكدليست لأننا لسنا بحاجة إلى تغيير الحجم كما نفعل في ArrayList.

2. التنفيذ

ArrayList يعتمد على مفهوم مصفوفة يمكن تغيير حجمها ديناميكيًا ، بينما لينكدليست يعتمد على تنفيذ قائمة مرتبطة بشكل مزدوج

3. معالجة

إلى لينكدليست يمكن استخدام class كقائمة وقائمة انتظار لأنها تنفذ واجهات List و Deque بينما يمكن لـ ArrayList فقط تنفيذ القوائم.

أربعة. ذاكرة

إلى لينكدليست يستهلك ذاكرة أكثر من ArrayList لأن كل عقدة في ملف لينكدليست يخزن مرجعين ، بينما ArrayList يحمل فقط البيانات وفهرسها

LinkedList مقابل ArrayList في Java

المعلماتلينكدليستArrayList
عمليات

عمليات الإدراج والإضافة والإزالة تكون أسرع

نسبيا العملياتبطيئة هنا

التنفيذ

يتبع تنفيذ القائمة المرتبطة Doubly

يتبع مفهوم الصفيف القابل لتغيير الحجم ديناميكيًا

معالجة

يمكن أن تكون فئة LinkedList قائمة وقائمة انتظار لأنها تنفذ واجهات List و Deque

الفرق بين البحث المتصل وغير المتصل

يمكن أن تكون فئة ArrayList قائمة لأنها تنفذ القوائم فقط

ذاكرة

استهلاك الذاكرة في LinkedList مرتفع

أقل مقارنة بـ LinkedList

هذا كل ما لدي أيها الناس! يقودنا هذا إلى نهاية هذه المقالة حول LinkedList vs ArrayList في Java. أتمنى أن تكونوا واضحين فيما يتعلق بما يتم تدريسه في هذه المقالة.

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