لينكدليست هي واحدة من هياكل البيانات الأكثر شيوعا في البرمجة. إنها قائمة بالعناصر التي يحتوي فيها كل عنصر على رابط للعنصر التالي. هذا يسمح لك لإضافة بكفاءة وإزالة العناصر في منتصف القائمة ، والتي هي الميزة الرئيسية لينكدليست مقارنة مع مجموعة العادية.
إذا كنت جديدا على برمجة جافا وتريد أن تتعلم كيفية إنشاء لينكدليست الخاصة بك ، وهذا المقال هو لك. سوف نلقي نظرة خطوة بخطوة على كيفية إنشاء لينكدليست باستخدام فئات جافا والأساليب.
قبل أن نبدأ ، ستحتاج إلى فهم أساسي للمفاهيم الأساسية مثل الفئات والأشياء والأساليب في لغة جافا. إذا لم تكن لديك خبرة في برمجة جافا ، فمن المستحسن أن تتعرف على أساسيات اللغة قبل قراءة هذه المقالة.
ملاحظة: في هذه المقالة ، سننظر في واحدة فقط من الطرق العديدة لإنشاء قائمة مرتبطة في جافا. لفهم الموضوع بشكل كامل ، يوصى باستشارة مصادر إضافية واستكشاف طرق أخرى لتنفيذ لينكدليست في جافا.
- ما هو لينكدليست ولماذا هو مطلوب في جافا?
- الخطوة 1: إنشاء فئة لينكدليست
- الخطوة 2: تنفيذ الأساليب الأساسية
- الخطوة 3: تنفيذ الواجهة القابلة للتكرار
- مثال على استخدام لينكدليست الخاص بك
- سؤال وجواب
- ما هو لينكدليست في جافا ولماذا هو مطلوب?
- كيف يمكنني إنشاء لينكدليست في جافا?
- كيف يمكنني إضافة عنصر إلى لينكدليست في جافا?
- كيف يمكنني إزالة عنصر من لينكدليست في جافا?
- كيف يمكنني الحصول على عنصر من لينكدليست حسب الفهرس في جافا?
ما هو لينكدليست ولماذا هو مطلوب في جافا?
لينكدليست (قائمة مرتبطة) هي واحدة من تطبيقات واجهة القائمة في لغة جافا. إنها بنية بيانات تسمح لك بتخزين وإدارة مجموعة من العناصر. إنها سلسلة من العقد ، كل منها يحتوي على بيانات ورابط للعقدة التالية.
والميزة الرئيسية لينكدليست هو أنه يوفر الإدراج السريع وحذف العناصر في بداية ونهاية القائمة. يتم ذلك عن طريق تغيير الروابط إلى العقد السابقة والتالية ، والتي لا تتطلب نسخ العناصر المتبقية. وبسبب هذا ، لينكدليست يعمل بكفاءة مع كميات كبيرة من البيانات وغالبا ما تستخدم في المهام حيث إدراج وحذف العناصر تحدث في كثير من الأحيان.
وبالإضافة إلى ذلك ، لينكدليست يسمح لك الزحف عناصر القائمة في الأمام وعكس النظام ، لأن كل عقدة تحتوي على وصلة إلى العقد السابقة والتالية. هذا مفيد بشكل خاص إذا كنت بحاجة إلى تصفح القائمة في اتجاهات مختلفة أو إجراء تكرارات متعددة.
لينكدليست لديه بعض العيوب مقارنة مع تطبيقات قائمة أخرى مثل أريليست أو ناقلات. في المقابل ، يتم الوصول إلى عناصر لينكدليست بالتتابع ، بدءا من العنصر الأول. وهذا يعني أن الوصول إلى عنصر تعسفي في لينكدليست يتطلب الذهاب من خلال جميع العناصر السابقة ، والتي يمكن أن تكون عامل تباطؤ. بالإضافة إلى ذلك ، قد تتطلب إضافة العناصر الموجودة في منتصف القائمة وإزالتها أيضا عبور عدد كبير من العقد.
بشكل عام ، لينكدليست هو بنية بيانات مفيدة في جافا ، وخاصة في الحالات التي تتطلب الإدراج المتكرر وحذف العناصر. الاستخدام السليم لل لينكدليست سوف تساعد على تحسين أداء البرنامج وتحسين العمل مع مجموعات.
الخطوة 1: إنشاء فئة لينكدليست
قبل أن نبدأ في إنشاء قائمة الملك الخاصة بنا ، دعنا ننشئ الأساس لفئة لينكدليست الخاصة بنا. للقيام بذلك ، إنشاء ملف جديد في إيد الخاص بك وتسميته " لينكدليست.جافا ".
لنبدأ بتعريف فئة لينكدليست:
| فئة عامة لينكدليست | |
| // تعليق: هنا يمثل نوع البيانات المعممة التي سيتم استخدامها في القائمة (على سبيل المثال ، عدد صحيح ، سلسلة ، ميكلاس ، الخ.) | |
| { | |
| // سيتم وضع رمز الفصل هنا | |
| } |
يحدد الكود أعلاه فئة قائمة فارغة مرتبطة ، والتي سنديرها في المستقبل. الآن يمكننا الانتقال إلى إضافة طرق لإدارة القائمة.
في هذه المرحلة ، تحتاج إلى إضافة منشئ فئة لإنشاء مثيل لينكدليست:
| لينكدليست العامة() | |
| // تعليق: هنا يمكنك إضافة رمز لتهيئة قائمتك. |
يسمح لنا المنشئ بدون وسيطات بإنشاء مثيلات جديدة لفئة لينكدليست دون تمرير الوسيطات.
لدينا الآن فئة قاعدة لينكدليست ، والتي سوف نستخدمها في المستقبل لإضافة المزيد من الوظائف. في الخطوة التالية ، سنبدأ في إضافة طرق لإضافة عناصر وإزالتها من القائمة.
الخطوة 2: تنفيذ الأساليب الأساسية
بعد إنشاء فئة لينكدليست والإعلان عن متغيراتها ، يمكننا الانتقال إلى تنفيذ الأساليب الأساسية التي تسمح لنا بالعمل بفعالية مع قائمتنا. فيما يلي الطرق الرئيسية التي يجب تنفيذها في فئة لينكدليست.
- طريقة الحجم (): ترجع هذه الطريقة الحجم الحالي للقائمة. لتنفيذ ذلك ، تحتاج إلى الذهاب من خلال جميع عناصر القائمة وحساب عددهم.
- طريقة إيسمبتي (): يتحقق هذا الأسلوب إذا كانت القائمة فارغة. يعود صحيحا إذا كانت القائمة لا تحتوي على أي عناصر ، وخطأ خلاف ذلك.
- طريقة الإضافة: تضيف هذه الطريقة عنصرا إلى نهاية القائمة. لتنفيذه ، تحتاج إلى إنشاء عقدة جديدة ، وتعيينها قيمة عنصر وتعيين مؤشر العنصر التالي إلى نول. ثم تحتاج إلى تحديث مؤشر العنصر الأخير في القائمة إلى العقدة الجديدة.
- طريقة الإضافة الأولى (): تضيف هذه الطريقة عنصرا إلى أعلى القائمة. لتنفيذه ، تحتاج إلى إنشاء عقدة جديدة ، وتعيين قيمة عنصر وتعيين مؤشر العنصر التالي إلى العنصر الأول الحالي في القائمة. ثم تحتاج إلى تحديث مؤشر العنصر الأول في القائمة إلى العقدة الجديدة.
- طريقة أدلاست (): تضيف هذه الطريقة عنصرا إلى نهاية القائمة. لتنفيذه ، تحتاج إلى إنشاء عقدة جديدة ، وتعيينها قيمة عنصر وتعيين مؤشر العنصر التالي إلى نول. ثم تحتاج إلى تحديث مؤشر العنصر الأخير في القائمة إلى العقدة الجديدة.
- طريقة الإزالة (): تزيل هذه الطريقة التكرار الأول للعنصر المحدد من القائمة. لتنفيذ ذلك ، تحتاج إلى الذهاب من خلال القائمة والتحقق من قيم العناصر. إذا تم العثور على عنصر ، فأنت بحاجة إلى تحديث مؤشرات العناصر السابقة والتالية.
- طريقة الإزالة الأولى (): تزيل هذه الطريقة العنصر الأول من القائمة. لتنفيذه ، تحتاج إلى تحديث مؤشر العنصر الأول إلى العنصر التالي في القائمة.
- طريقة ريموفيلاست (): تزيل هذه الطريقة العنصر الأخير من القائمة. لتنفيذه ، تحتاج إلى تحديث مؤشر العنصر الأخير إلى العنصر السابق في القائمة.
- يحتوي على () الطريقة: تتحقق هذه الطريقة من وجود عنصر في القائمة. يعود صحيحا إذا تم العثور على العنصر ، وخطأ خلاف ذلك.
- الحصول على () طريقة: تقوم هذه الطريقة بإرجاع عنصر في الفهرس المحدد. لتنفيذه ، تحتاج إلى الانتقال من خلال القائمة إلى الفهرس المطلوب وإرجاع قيمة العنصر في هذا الموضع.
- طريقة الفهرس (): تقوم هذه الطريقة بإرجاع فهرس التكرار الأول للعنصر المحدد في القائمة. إذا لم يتم العثور على العنصر ، فإن الطريقة ترجع -1.
هذه هي الطرق الرئيسية التي ستساعدنا على استخدام قائمة لينكدليست الخاصة بنا بشكل فعال في جافا. معرفة كيفية تنفيذ هذه الأساليب ، يمكننا إضافة وظائف إضافية وطرق إضافية حسب تقديرنا.
الخطوة 3: تنفيذ الواجهة القابلة للتكرار
بعد أن نفذنا فئة لينكدليست وأضاف العمليات الأساسية مثل إضافة عناصر ، حذف العناصر ، واسترجاع العناصر ، يمكننا الانتقال إلى الخطوة التالية — تنفيذ واجهة قابلة للتكرار. تتيح لنا الواجهة القابلة للتكرار التكرار من خلال قائمتنا المرتبطة واستقبال العناصر بالتتابع. هذا مريح للغاية ، لأنه يسمح لك باستخدام-كل حلقات للتكرار من خلال العناصر.
من أجل تنفيذ الواجهة القابلة للتكرار ، نحتاج إلى إضافة طريقة التكرار() إلى فئة لينكدليست الخاصة بنا. يجب أن تقوم طريقة التكرار() بإرجاع كائن يقوم بتنفيذ واجهة التكرار. تحتوي واجهة التكرار على طريقتين رئيسيتين: هاسنكست () و التالي (). ترجع طريقة هاسنكست () صحيح إذا كانت لا تزال هناك عناصر في المجموعة للتكرار ، وخطأ خلاف ذلك. الطريقة التالية() ترجع العنصر التالي من المجموعة. بالإضافة إلى ذلك ، يحتوي المكرر على طريقة إزالة() تسمح لك بإزالة عنصر من المجموعة أثناء التكرار (هذه الميزة غير مطلوبة للتنفيذ ، ولكنها مفيدة لبعض الحالات المحددة).
لتنفيذ الواجهة القابلة للتكرار ، سنحتاج إلى فئة لينكدليستيراتور المتداخلة التي ستنفذ واجهة التكرار. في هذه الفئة ، سنقوم بتخزين موقف التكرار الحالي وتنفيذ الطرق الرئيسية هاسنكست () والتالي ().
هذه هي الطريقة التي سوف رمز من فئة لينكدليست لدينا مع تنفيذ واجهة قابلة للتكرار تبدو وكأنها:
الفئة العامة لينكدليست تنفذ تكرارية {
// الفئة الداخلية لينكدليستيراتور
فئة خاصة لينكدليستيراتور تنفذ إيتراتور {
العقدة الخاصة الحالية;
العامة لينكدليستيراتور () {
الحالي = الرأس;
}
العامة منطقية هاسنكست () {
العودة الحالية != null;
}
public T next() {
T data = current.getData();
current = current.getNext();
return data;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
// Остальные методы LinkedList
public Iterator iterator() {
return new LinkedListIterator();
}
}
Теперь, когда мы реализовали интерфейс Iterable, мы можем использовать цикл for-each для итерации по нашему связанному списку. Например:
LinkedList list = new LinkedList();
list.add(1);
list.add(2);
list.add(3);
ل (عدد الأسطوانات : قائمة) {
النظام.خارج.برينتلن (الأسطوانات);
}
نتيجة لتنفيذ هذا الرمز ، سيتم عرض ما يلي:
1
2
3
وبالتالي ، فإن تنفيذ الواجهة القابلة للتكرار يسمح لنا باستخدام كل حلقة للتكرار بسهولة من خلال قائمتنا المرتبطة ، مما يجعلها أكثر ملاءمة وسهولة في الاستخدام.
مثال على استخدام لينكدليست الخاص بك
Для демонстрации примера использования собственного LinkedList в Java создадим простую программу, которая хранит список имен студентов.
- }
- List لينكدليست в программе:
الطبقة العامة الرئيسية {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
مايلينكدليست ستودنتليست = جديد مايلينكدليست();