تخطَّ إلى المحتوى

LinkedList

القائمة المرتبطة LinkedList LinkedList

LinkedList قائمة مرتبطة doubly-linked تسمح بالإضافة والحذف السريع من البداية والنهاية لكن الوصول بالفهرس بطيء.

LinkedList تحقق من الواجهة نفسها كـ ArrayList لكن بنية مختلفة: كل عنصر يحتوي مرجعين (للعنصر السابق والالتالي). هذا يجعل الإضافة والحذف من البداية والنهاية O(1) لكن الوصول بالفهرس O(n) لأنها تحتاج المرور من أحد الطرفين.

تُستخدم بشكل رئيسي عند الحاجة لإضافة/حذف متكرر من البداية، أو عند استخدامها كـ Queue أو Stack.

الصياغة

LinkedList<T> list = new LinkedList<>();
list.addFirst(item);
list.addLast(item);
list.getFirst();
list.getLast();
list.removeFirst();
list.removeLast();

📄 مثال

import java.util.LinkedList;

LinkedList<String> queue = new LinkedList<>();
queue.addLast("أول");
queue.addLast("ثاني");
queue.addLast("ثالث");

queue.getFirst(); // "أول"
queue.removeFirst(); // يحذف "أول"
queue.size(); // 2

أهم النقاط

العنصرالوظيفة
addFirst/addLastإضافة من البداية أو النهاية — O(1)
getFirst/getLastالوصول للبداية أو النهاية — O(1)
removeFirst/removeLastحذف من البداية أو النهاية — O(1)
Queue/Dequeتُنفذ واجهات Queue و Deque — مثالية للطوابير

💡 نصائح عملية

  • استخدم ArrayList كخيار افتراضي — LinkedList أبطأ عمليًا بسبب عدم و locality الذاكرة
  • استخدم LinkedList كـ Queue天然ًا: addLast/removeFirst

⚠️ أخطاء شائعة

  • استخدام LinkedList بدل ArrayList افتراضيًا — أبطأ في القراءة العشوائية بسبب cache misses
  • عدم معرفة أن LinkedList تُنفذ List interface — يمكن استخدامها كقائمة عادية

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.