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 الكامل بالعربي.