Javaالإنترفيس ListIterator
في جافا
- مقدمة
- دوال الإنترفيس
ListIterator
- أمثلة شاملة
مقدمة
الإنترفيس ListIterator
يرث من الإنترفيس Iterator
, و يملك دوال إضافية للتعامل مع العناصر المخزنة.
إذاً يستخدم أيضاً لتخزين عناصر متتالية موجودة في أي كائن دفعة واحدة.
بعدها يمكن إرجاع هذه العناصر واحداً تلو الآخر.
الدوال التي يملكها تمكنك من المرور على العناصر الموجودة فيه من الأول إلى الأخير أو العكس.
طريقة استخدامه
هناك ثلاث مراحل أساسية عند التعامل مع الإنترفيس ListIterator
:
- جلب عناصر أي كائن تريد بواسطة الدالة
ListIterator()
و تخزينهم مباشرةً في كائن من الإنترفيسListIterator
. - إنشاء حلقة تمر على جميع العناصر الموجودة في كائن الـ
ListIterator
بواسطة الدالةhasNext()
أوhasPrevious()
. - الحصول على عنصر واحد من العناصر الموجودة في كائن الـ
ListIterator
بواسطة الدالةnext()
أوprevious()
.
دوال الإنترفيس ListIterator
الجدول التالي يحتوي على دوال الإنترفيس ListIterator
.
الدالة مع تعريفها | |
---|---|
1 | public void add(Object obj)
تضيف الكائن الذي نمرره لها كـ Argument في الكائن الذي قام باستدعائها.ملاحظة: إذا قمت باستدعاء الدالة next() قبل استدعائها, عندها سيتم إضافة الكائن obj بعد أخر كائن أرجعته الدالة next() . |
2 | public boolean hasNext()
ترجع true في حال كان كائن الـ ListIterator يملك عنصر أو أكثر بعد العنصر الحالي. |
3 | public boolean hasPrevious()
ترجع true في حال كان كائن الـ ListIterator يملك عنصر أو أكثر قبل العنصر الحالي. |
4 | public Object next()
ترجع العنصر التالي الموجود في كائن الـ ListIterator , ترجعه كـ Object . |
5 | public int nextIndex()
ترجع Index العنصر التالي الموجود في كائن الـ ListIterator .في حال تم المرور على جميع عناصر كائن الـ ListIterator ترجع Index آخر عنصر تم الوصول إليه. |
6 | public Object previous()
ترجع العنصر السابق الموجود في كائن الـ ListIterator , ترجعه كـ Object . |
7 | public int previousIndex()
ترجع Index العنصر السابق الموجود في كائن الـ ListIterator .ترجع 1- في حال لم يتم الوصول إلى أي عنصر قبل استدعائها. |
8 | public Object remove()
تحذف العنصر الحالي, أي آخر عنصر تم الوصول إليه قبل استدعائها. |
9 | public void set(Object obj)
تضع قيمة الكائن الذي نمرره لها كـ Argument كقيمة جديدة للعنصر الحالي, أي مكان آخر عنصر تم الوصول إليه. |
أمثلة شاملة
المثال الأول
في المثال التالي قمنا بإنشاء كائن من الكلاس ArrayList
إسمه al
, ثم أدخلنا فيه خمسة عناصر.
بعدها وضعنا جميع عناصر الكائن al
في كائن نوعه ListIterator
إسمه li
.
في الأخير قمنا بإنشاء حلقة تعرض جميع عناصر الكائن li
من العنصر الأول إلى العنصر الأخير.
قمنا باستخدام الدوال hasNext()
و next()
في الحلقة حتى نستطيع جلب العنصر التالي في الكائن li
في كل دورة.
import java.util.ArrayList; // ArrayList هنا قمنا باستدعاء الكلاس import java.util.ListIterator; // ListIterator هنا قمنا باستدعاء الإنترفيس public class Main { public static void main(String[] args) { // al إسمه ArrayList هنا قمنا بإنشاء كائن من الكلاس ArrayList al = new ArrayList(); // al هنا قمنا بإضافة 5 عناصر في الكائن al.add("A"); al.add("B"); al.add("C"); al.add("D"); al.add("E"); // al وضعنا فيه جميع عناصر الكائن li إسمه ListIterator هنا قمنا بإنشاء كائن نوعه ListIterator li = al.listIterator(); // من العنصر الأول إلى العنصر الأخير و تعرض كل عنصر تمر عليه i هنا أنشأنا حلقة تمر على جميع عناصر الكائن while(li.hasNext()) { System.out.println(li.next()); } } }
سنحصل على النتيجة التالية عند التشغيل.
A B C D E
المثال الثاني
في المثال التالي قمنا بإنشاء كائن من الكلاس ArrayList
إسمه al
, ثم أدخلنا فيه خمسة عناصر.
بعدها وضعنا جميع عناصر الكائن al
في كائن نوعه ListIterator
إسمه li
.
في الأخير قمنا بإنشاء حلقة تعرض جميع عناصر الكائن li
من العنصر الأخير إلى العنصر الأول.
قمنا باستخدام الدوال hasPrevious()
و previous()
في الحلقة حتى نستطيع جلب العنصر السابق في الكائن li
في كل دورة.
import java.util.ArrayList; // ArrayList هنا قمنا باستدعاء الكلاس import java.util.ListIterator; // ListIterator هنا قمنا باستدعاء الإنترفيس public class Main { public static void main(String[] args) { // al إسمه ArrayList هنا قمنا بإنشاء كائن من الكلاس ArrayList al = new ArrayList(); // al هنا قمنا بإضافة 5 عناصر في الكائن al.add("A"); al.add("B"); al.add("C"); al.add("D"); al.add("E"); // و حددنا عدد عناصره حتى نستطيع البداية من العناصر الأخير فيه al وضعنا فيه جميع عناصر الكائن li إسمه ListIterator هنا قمنا بإنشاء كائن نوعه ListIterator li = al.listIterator(al.size()); // من العنصر الأخير إلى العنصر الأول و تعرض كل عنصر تمر عليه i هنا أنشأنا حلقة تمر على جميع عناصر الكائن while(li.hasPrevious()) { System.out.println(li.previous()); } } }
سنحصل على النتيجة التالية عند التشغيل.
E D C B A
المثال الثالث
في المثال التالي قمنا بإنشاء كائن من الكلاس ArrayList
إسمه al
, ثم أدخلنا فيه خمسة عناصر.
بعدها وضعنا جميع عناصر الكائن al
في كائن نوعه ListIterator
إسمه li
.
في الأخير قمنا بإنشاء حلقتين: الأولى تعرض جميع عناصر الكائن li
من العنصر الأول إلى العنصر الأخير, و الثانية تعرضهم بالعكس.
import java.util.ArrayList; // ArrayList هنا قمنا باستدعاء الكلاس import java.util.ListIterator; // ListIterator هنا قمنا باستدعاء الإنترفيس public class Main { public static void main(String[] args) { // al إسمه ArrayList هنا قمنا بإنشاء كائن من الكلاس ArrayList al = new ArrayList(); // al هنا قمنا بإضافة 5 عناصر في الكائن al.add("A"); al.add("B"); al.add("C"); al.add("D"); al.add("E"); // al وضعنا فيه جميع عناصر الكائن li إسمه ListIterator هنا قمنا بإنشاء كائن نوعه ListIterator li = al.listIterator(); System.out.println("Ascending sort order:"); // من العنصر الأول إلى العنصر الأخير و تعرض كل عنصر تمر عليه i هنا أنشأنا حلقة تمر على جميع عناصر الكائن while(li.hasNext()) { System.out.print(li.next()+" "); } System.out.println("\n"); System.out.println("Descending sort order:"); // من العنصر الأخير إلى العنصر الأول و تعرض كل عنصر تمر عليه i هنا أنشأنا حلقة تمر على جميع عناصر الكائن while(li.hasPrevious()) { System.out.print(li.previous()+" "); } } }
سنحصل على النتيجة التالية عند التشغيل.
Ascending sort order: A B C D E Descending sort order: E D C B A