مقدمة
الإنترفيس ListIterator
يرث من الإنترفيس Iterator
, و يملك دوال إضافية للتعامل مع العناصر المخزنة.
إذاً يستخدم أيضاً لتخزين عناصر متتالية موجودة في أي كائن دفعة واحدة.
بعدها يمكن إرجاع هذه العناصر واحداً تلو الآخر.
الدوال التي يملكها تمكنك من المرور على العناصر الموجودة فيه من الأول إلى الأخير أو العكس.
طريقة استخدامه
هناك ثلاث مراحل أساسية عند التعامل مع الإنترفيس ListIterator
:
- جلب عناصر أي كائن تريد بواسطة الدالة
ListIterator()
و تخزينهم مباشرةً في كائن من الإنترفيس ListIterator
.
- إنشاء حلقة تمر على جميع العناصر الموجودة في كائن الـ
ListIterator
بواسطة الدالة hasNext()
أو hasPrevious()
.
- الحصول على عنصر واحد من العناصر الموجودة في كائن الـ
ListIterator
بواسطة الدالة next()
أو previous()
.
أمثلة شاملة
المثال الأول
في المثال التالي قمنا بإنشاء كائن من الكلاس ArrayList
إسمه al
, ثم أدخلنا فيه خمسة عناصر.
بعدها وضعنا جميع عناصر الكائن al
في كائن نوعه ListIterator
إسمه li
.
في الأخير قمنا بإنشاء حلقة تعرض جميع عناصر الكائن li
من العنصر الأول إلى العنصر الأخير.
قمنا باستخدام الدوال hasNext()
و next()
في الحلقة حتى نستطيع جلب العنصر التالي في الكائن li
في كل دورة.
Main.java
import java.util.ArrayList; // Arrayهنا قمنا باستدعاء الكلاس
import java.util.ListIterator; //Iterator هنا قمنا باستدعاء الإنترفيس
public class Main {
public static void main(String[] args) {
// al إسمه Arrayهنا قمنا بإنشاء كائن من الكلاس
Arrayal = new ArrayList();
// al هنا قمنا بإضافة 5 عناصر في الكائن
al.add("A");
al.add("B");
al.add("C");
al.add("D");
al.add("E");
// al وضعنا فيه جميع عناصر الكائن li إسمهIterator هنا قمنا بإنشاء كائن نوعه
Iterator 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; // Arrayهنا قمنا باستدعاء الكلاس
import java.util.ListIterator; //Iterator هنا قمنا باستدعاء الإنترفيس
public class Main {
public static void main(String[] args) {
// al إسمه Arrayهنا قمنا بإنشاء كائن من الكلاس
Arrayal = new ArrayList();
// al هنا قمنا بإضافة 5 عناصر في الكائن
al.add("A");
al.add("B");
al.add("C");
al.add("D");
al.add("E");
// و حددنا عدد عناصره حتى نستطيع البداية من العناصر الأخير فيه al وضعنا فيه جميع عناصر الكائن li إسمهIterator هنا قمنا بإنشاء كائن نوعه
Iterator 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; // Arrayهنا قمنا باستدعاء الكلاس
import java.util.ListIterator; //Iterator هنا قمنا باستدعاء الإنترفيس
public class Main {
public static void main(String[] args) {
// al إسمه Arrayهنا قمنا بإنشاء كائن من الكلاس
Arrayal = new ArrayList();
// al هنا قمنا بإضافة 5 عناصر في الكائن
al.add("A");
al.add("B");
al.add("C");
al.add("D");
al.add("E");
// al وضعنا فيه جميع عناصر الكائن li إسمهIterator هنا قمنا بإنشاء كائن نوعه
Iterator 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