📚 هياكل البيانات في جافا: دليلك الشامل لفهم واستخدام LinkedList 🚀
مرحباً بك في درس جديد من أكاديمية كودكس! اليوم سنتعرف على واحدة من أهم هياكل البيانات في جافا وهي LinkedList. إذا كنت قد استخدمت ArrayList من قبل، فاستعد لاكتشاف هيكل بيانات أكثر مرونة في التعامل مع الإدراج والحذف!
🔍 ما هي LinkedList؟
LinkedList هي هيكل بيانات يتكون من سلسلة من العناصر تسمى العُقَد (Nodes). كل عقدة تحتوي على جزئين رئيسيين:
- البيانات (Data): القيمة التي نريد تخزينها
- الرابط (Link): مؤشر إلى العقدة التالية في القائمة
💡 تخيلها مثل عقد متصلة بسلسلة، حيث كل عقدة تعرف فقط مكان العقدة التي تليها!
// عقدة بسيطة تحتوي على رقم ومؤشر للعقدة التالية
class Node {
int data;
Node next;
}
⚡ لماذا نستخدم LinkedList؟
هناك عدة أسباب تجعل LinkedList خياراً ممتازاً في مواقف معينة:
- الإدراج والحذف السريع: خاصة عند البداية أو النهاية
- المرونة الديناميكية: تتوسع وتتقلص تلقائياً
- لا إهدار للذاكرة: تخصص الذاكرة حسب الحاجة فقط
🛠️ كيفية إنشاء واستخدام LinkedList في جافا
جافا توفر لنا الفئة LinkedList الجاهزة للاستخدام في حزمة java.util.
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
// إنشاء LinkedList جديدة
LinkedList<String> names = new LinkedList<>();
// إضافة عناصر
names.add("Ahmed");
names.add("Mohamed");
names.add("Fatima");
System.out.println("The list: " + names);
}
}
📝 أهم العمليات الأساسية على LinkedList
✅ إضافة العناصر
LinkedList<Integer> numbers = new LinkedList<>();
// إضافة في النهاية
numbers.add(10);
numbers.add(20);
// إضافة في البداية
numbers.addFirst(5);
// إضافة في موضع محدد
numbers.add(1, 15); // إضافة الرقم 15 في الموضع الأول
❌ حذف العناصر
LinkedList<String> fruits = new LinkedList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// حذف من البداية
fruits.removeFirst();
// حذف من النهاية
fruits.removeLast();
// حذف عنصر محدد
fruits.remove("Banana");
🔍 الوصول إلى العناصر
LinkedList<Double> prices = new LinkedList<>();
prices.add(19.99);
prices.add(29.99);
prices.add(39.99);
// الحصول على العنصر الأول
double first = prices.getFirst();
// الحصول على العنصر الأخير
double last = prices.getLast();
// الحصول على عنصر بمؤشر محدد
double middle = prices.get(1);
🔄 المقارنة بين LinkedList و ArrayList
| الميزة | LinkedList | ArrayList |
|---|---|---|
| الإدراج/الحذف من البداية | ⭐⭐⭐ سريع جداً | ⭐ بطيء |
| الإدراج/الحذف من النهاية | ⭐⭐⭐ سريع جداً | ⭐⭐⭐ سريع جداً |
| الوصول العشوائي | ⭐ بطيء | ⭐⭐⭐ سريع جداً |
| استهلاك الذاكرة | ⭐⭐ متوسط | ⭐⭐⭐ أفضل |
💡 مثال تطبيقي شامل
لنرى كيف نستخدم LinkedList في برنامج حقيقي بسيط:
import java.util.LinkedList;
public class TaskManager {
public static void main(String[] args) {
LinkedList<String> tasks = new LinkedList<>();
// إضافة مهام
tasks.add("Write the report");
tasks.addFirst("Reply to emails"); // مهمة عاجلة في البداية
tasks.add("Prepare the presentation");
System.out.println("The current tasks: " + tasks);
// إكمال المهمة الأولى
String completedTask = tasks.removeFirst();
System.out.println("Completed task: " + completedTask);
// عرض المهمة التالية
String nextTask = tasks.getFirst();
System.out.println("Next task: " + nextTask);
}
}
🎯 نصائح عملية لاستخدام LinkedList
- استخدم LinkedList عندما: تكثر عمليات الإدراج والحذف من البداية أو المنتصف
- تجنب LinkedList عندما: تحتاج وصولاً عشوائياً متكرراً للعناصر
- اختر ArrayList عندما: تكثر عمليات القراءة والوصول العشوائي
🎓 اختبر نفسك
السؤال 1 من 30% أكملت
ما هو المكونان الرئيسيان اللذان تتكون منهما كل عقدة (Node) في LinkedList؟
آخر تحديث: ١٦ مارس ٢٠٢٦
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال
جاري تحميل التعليقات...