Java الإنترفيس ListIterator في جافا

مقدمة

الإنترفيس ListIterator يرث من الإنترفيس Iterator, و يملك دوال إضافية للتعامل مع العناصر المخزنة.

إذاً يستخدم أيضاً لتخزين عناصر متتالية موجودة في أي كائن دفعة واحدة.
بعدها يمكن إرجاع هذه العناصر واحداً تلو الآخر.

الدوال التي يملكها تمكنك من المرور على العناصر الموجودة فيه من الأول إلى الأخير أو العكس.


طريقة استخدامه

هناك ثلاث مراحل أساسية عند التعامل مع الإنترفيس ListIterator:

  1. جلب عناصر أي كائن تريد بواسطة الدالة ListIterator() و تخزينهم مباشرةً في كائن من الإنترفيس ListIterator.
  2. إنشاء حلقة تمر على جميع العناصر الموجودة في كائن الـ ListIterator بواسطة الدالة hasNext() أو hasPrevious().
  3. الحصول على عنصر واحد من العناصر الموجودة في كائن الـ ListIterator بواسطة الدالة next() أو previous().

دوال الإنترفيس ListIterator

الجدول التالي يحتوي على دوال الإنترفيس ListIterator.

الدالة مع تعريفها
public void add(Object obj) تضيف الكائن الذي نمرره لها كـ Argument في الكائن الذي قام باستدعائها.
ملاحظة: إذا قمت باستدعاء الدالة next() قبل استدعائها, عندها سيتم إضافة الكائن obj بعد أخر كائن أرجعته الدالة next().
public boolean hasNext() ترجع true في حال كان كائن الـ ListIterator يملك عنصر أو أكثر بعد العنصر الحالي.
public boolean hasPrevious() ترجع true في حال كان كائن الـ ListIterator يملك عنصر أو أكثر قبل العنصر الحالي.
public Object next() ترجع العنصر التالي الموجود في كائن الـ ListIterator, ترجعه كـ Object.
public int nextIndex() ترجع Index العنصر التالي الموجود في كائن الـ ListIterator.
في حال تم المرور على جميع عناصر كائن الـ ListIterator ترجع Index آخر عنصر تم الوصول إليه.
public Object previous() ترجع العنصر السابق الموجود في كائن الـ ListIterator, ترجعه كـ Object.
public int previousIndex() ترجع Index العنصر السابق الموجود في كائن الـ ListIterator.
ترجع 1- في حال لم يتم الوصول إلى أي عنصر قبل استدعائها.
public Object remove() تحذف العنصر الحالي, أي آخر عنصر تم الوصول إليه قبل استدعائها.
public void set(Object obj) تضع قيمة الكائن الذي نمرره لها كـ Argument كقيمة جديدة للعنصر الحالي, أي مكان آخر عنصر تم الوصول إليه.

أمثلة شاملة

المثال الأول

في المثال التالي قمنا بإنشاء كائن من الكلاس ArrayList إسمه al, ثم أدخلنا فيه خمسة عناصر.
بعدها وضعنا جميع عناصر الكائن al في كائن نوعه ListIterator إسمه li.
في الأخير قمنا بإنشاء حلقة تعرض جميع عناصر الكائن li من العنصر الأول إلى العنصر الأخير.

قمنا باستخدام الدوال hasNext() و next() في الحلقة حتى نستطيع جلب العنصر التالي في الكائن li في كل دورة.

Main.java
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 في كل دورة.

Main.java
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 من العنصر الأول إلى العنصر الأخير, و الثانية تعرضهم بالعكس.

Main.java
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
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة