خالد مرتضى نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 ما الفرق بين إستخدام الarraylist او ال linkedlist خاصة إن كﻻهما يتم إستخدامه بنفس الطريقة 2 اقتباس
0 شرف الدين حفني نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 الإثنان يتم إستخدامهما بنفس الطريقة لأن كﻻهما يقوم بعمل implement لنفس الواجهة البرمجية list ولكن يوجد فرق في طريقة عمل كل منهما: الarrayList تقوم بإستخدام الarray من أجل تخزين العناصر, بينما الLinkedList تقوم بإستخدام نوع من هياكل البيانات الذي يدعى doublyLinkedList والذي يعتمد بشكل أساسي على أن لكل عنصر ثﻻث خواص وهما القيمة, العنصر التالي, والعنصر السابق , على عكس المصفوفة التي تقوم بتخزين كل عنصر وتصل إليه بإستخدام الفهرسindex فﻻ يوجد عﻻقة بين العناصر وبعضها يوجد فرق في الأداء بينهما عند القيام على عمليات الإضافة والحذف على العناصر, حيث الlinkedList كما ذكرنا سابقاً تعتمد على ان لكل عنصر خواص القيمة والتالي والسابق, فإذا أردنا جدﻻ إضافة عنصر يمكن ذلك بكل سهولة عن طريق الإشارة إليه كما موضح من الشكل element a{ value:"sharaf", next: b } element b{ value"ashraf" next : null } إذا اردنا إضافة عنصر يمكن ذلك بسهولة عن طريق تعديل قيمة الخاصية next في العنصر b بينما في الarrayLit بسبب أنها تعتمد على المصفوفة في تخزين البيانات فيجب أن تقوم بحذف المصفوفة كلها وبنائها من جديد حتى تستطيع إضافة عنصر أو حذف عنصر الlinkedList يتصرف كlistلانه يقوم بعمل implement للlist interface بالإضافة لقيامه بعمل الdeque لأنه يقوم بعمل implement لواجهته , على عكس الarrayList التي تتصرف فقط ك list بوجه عام أداء الarrayList يتفوق في حالة إعتماد التطبيق على تخزين البيانات والوصول إليها بينما الLinkedList تتفوق في حالة إعتماد التطبيق على إضافة ومسح العناصر بشكل متردد اقتباس
0 محمد أبو عواد نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 يعد كل من ArrayList و LinkedList تطبيق لواجهة list في Java. فيما يلي الاختلافات المهمة بين طريقة ArrayList و LinkedList: من حيث التنفيذ الداخلي: يستخدم ArrayList داخليا مصفوفة ديناميكية لتخزين عناصرها بينما تستخدم LinkedList ما يعرف ب Doubly Linked List لتخزين عناصرها. ArrayList بطيئة لأن المعالجة تكون أبطأ بينما LinkedList أسرع لأنه لا يتطلب الكثير من عمليات التحويل أو التي تسمى shifting . ArrayList تنفذ القائمة فقط بينما تطبق LinkedList القائمة بالإضافة إلى قائمة الانتظار حيث يمكن أن يعمل كقائمة انتظار أيضًا (queue) ArrayList أسرع في تخزين البيانات والوصول إليها بينما LinkedList أسرع في معالجة البيانات. مثال على ArrayList import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class JavaTester { public static void main(String args[]) { //انشاء ArrayList List<String> list = new ArrayList<>(); //اضافة البيانات الى القائمة list.add("A"); list.add("B"); list.add("C"); list.add("D"); //طباعة القائمة System.out.println(list); } } الناتج كالتالي [A, B, C, D] مثال على LinkedList import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class JavaTester { public static void main(String args[]) { //انشاء LinkedList List<String> list1 = new LinkedList<>(); //اضافة البيانات للقائمة list1.add("A"); list1.add("B"); list1.add("C"); list1.add("D"); //طباعة بيانات القائمة System.out.println(list1); } } الناتج كالتالي [A, B, C, D] اقتباس
0 Ali Haidar Ahmad نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 linkedlist هي أحد الفرسان الأربعة في المسابقات البرمجية عندما نتحدث عن الجافا لما تقدمه من ديناميكية ومرونة في التعامل على عكس المصفوفات العادية فهما يوفران لك العديد من الدوال التي تمكنك من البحث والتشييك على عناصرها وإضافة ومعالجة وحذف عناصر جديدة إلخ... تابع معي: linkedlist هو كلاس يرث الكلاس ArrayList والذي بدوره يحقق الواجهة List والتي بدورها تحقق الواجهة الكبيرة Collection. الواجهة List تم بناءه لتعريف وتخزين مجموعة من العناصر كما لو أنه مصفوفة ليس لها حجم محدد. و العناصر يمكن إضافتها في أمكان محددة ضمنها, و يمكن الوصول إليها بواسطة الفهارس. وهذا مايعطيك حرية ومرونة كبيرة.ويملك العديد من الدوال مثل add و addAll و remove و إضافةً إلى الدوال التي ورثها من Collection أما ArrayList فهي تحقيق للواجهة List أي أنها تعريف للدوال الموجودة فيها إضافةً إلى دوال جديدة لمنحك حرية أكبر في التعامل مع المصفوفات. أمثلة: // لاستخدامه عليك استيراده import java.util.ArrayList; public class Main { public static void main(String[] args) { //ArrayList إنشاء ArrayList li = new ArrayList(); // طباعة عناصرها System.out.println(li); // عدد عناصرها System.out.println(li.size()); // إضافة عناصر li.add("1"); li.add("ali"); // طباعة عناصرها System.out.println(li); // عدد عناصرها System.out.println(li.size()); // حذف عنصر li.remove("ali"); } } بواني الكلاس: ArrayList() // الباني الافتراضي وهنا يكون حجمه الابتدائي هو عنصر واحد فقط ArrayList(int initialCapacity) // لتحديد حجمه المبدأي ArrayList(Collection c) //أخرى ArrayList يستخدم لكي نمرر له الآن LinkedList ترث ال arraylist كما ذكرنا، أضف إلى هذا أنها مطورة أكثر من ناحية الأداء والكفاءة والدوال. فمثلاً تمتلك دوال للإضافة والحذف والمعالجة غير موجودة في arraylist أيضاً مترجم جافا يتعامل معها بسهولة وسرعة أكبر من arraylist لكن LinkedList تشغل مساحة أكبر من الذاكرة مقاؤنةً ب LinkedList مثال: import java.util.LinkedList; public class Main { public static void main(String[] args) { LinkedList li = new LinkedList(); System.out.println(li); System.out.println(li.size()); li.add("ali"); // [ali] // للإضافة ضمن موقع محدد li.add(0, "eyad"); // [eyad, ali] li.addFirst("ali"); // [ali, eyad, ali] li.addLast("eyad"); // [ali, eyad, aliوeyad] // لحذف أول عنصر arr.remove(); // العنصر الثاني li.remove(1); } } البواني: LinkedList() // الافتراضي LinkedList(Collection c) //Arraylist أو LinkedList لتمرير اقتباس
السؤال
خالد مرتضى
ما الفرق بين إستخدام الarraylist او ال linkedlist خاصة إن كﻻهما يتم إستخدامه بنفس الطريقة
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.