איטרטור בג'אווה הוא אחד הנפוצים ביותר בשימוש סמנים במסגרת Java Collections Framework . הוא משמש כדי לעבור או לחזור על אלמנטים של אוסף אחד אחד.
- הוא משמש למעבר אלמנטים בכיוון קדימה בלבד.
- מסיר אלמנטים בבטחה במהלך המעבר באמצעות remove().
- Iterator הוא סמן אוניברסלי שמתאים לכל סוגי האוסף - ערכת רשימה ותור.
הצהרת איטרטור
איטרטור ממשק ציבורי
כאן E מייצג את סוג האלמנטים שיש לבצע איטרציה עליהם.
יצירת אובייקט של איטרטור
אובייקט Iterator נוצר על ידי קריאה למתודה iterator() על אובייקט אוסף. כאן נשתמש באיטרטור כדי לעבור ולהדפיס כל אלמנט ב-an ArrayList .
Javaגְבִיָה
שמות = New ArrayList<>();
איטרטורitr = names.iterator(); cdr טופס מלא
import java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Create an ArrayList and add some elements ArrayList<String> al = new ArrayList<>(); al.add('A'); al.add('B'); al.add('C'); // Obtain an iterator for the ArrayList Iterator<String> it = al.iterator(); // Iterate through the elements and print each one while (it.hasNext()) { // Get the next element String n = it.next(); System.out.println(n); } } }
תְפוּקָה
A B C
היררכיה של איטרטור
איטרטור הוא חלק מה- חבילת java.util והוא מיושם על ידי כל מחלקות האיסוף באמצעות ממשקי המשנה שלהם.
איטרטור-סמןשיטות ממשק איטרטור
ממשק האיטרטור מגדיר שלוש שיטות כמפורט להלן:
- hasNext(): מחזירה true אם האיטרציה כוללת יותר אלמנטים.
- הַבָּא(): מחזירה את הרכיב הבא באיטרציה. זה זורק NoSuchElementException אם לא קיים עוד אלמנט.
- לְהַסִיר(): מסיר את האלמנט האחרון שהוחזר על ידי next(). ניתן לקרוא לשיטה זו רק פעם אחת בכל קריאה ל-next().
פֶּתֶק השיטה : remove() יכולה להעלות שני חריגים, כלומר באופן הבא:
עבודה פנימית
בחלק זה ננסה להבין כיצד Java Iterator והשיטות שלו פועלות באופן פנימי. הבה ניקח את האובייקט LinkedList הבא כדי להבין את הפונקציונליות הזו.
שלב 1: כעת הבה ניצור אובייקט Iterator באובייקט List כפי שמוצג להלן:
איטרטור
cityIterator = cities.iterator();
האיטרטור 'citiesIteartor' ייראה כך:
שלב-1כאן הסמן של איטרטור מצביע לפני האלמנט הראשון של הרשימה.
שלב 2: כעת נריץ את קטע הקוד הבא.
cityIterator.hasNext();
cityIterator.next();
שלב-2כאשר אנו מריצים את קטע הקוד שלמעלה, הסמן של Iterator מצביע על האלמנט הראשון ברשימה כפי שמוצג בתרשים לעיל.
java מכיל תת מחרוזת
שלב 3: כעת נריץ את קטע הקוד הבא.
cityIterator.hasNext();
cityIterator.next();
שלב-3
כאשר אנו מריצים את קטע הקוד שלמעלה, הסמן של Iterator מצביע על האלמנט השני ברשימה כפי שמוצג בתרשים לעיל.
שלב 4: בצע את התהליך הזה כדי להגיע לסמן האיטרטור לאלמנט הקצה של הרשימה.
מספר אקראי gen java
שלב-4שלב 5: לאחר קריאת האלמנט האחרון אם נריץ את קטע הקוד שלהלן הוא מחזיר ערך שקר.
cityIterator.hasNext();

כאשר הסמן של איטרטור מצביע על הרכיב הסופי של הרשימה שאחרי hasNext() השיטה מחזירה ערך שקר.
פֶּתֶק: Java Iterator תומך רק באיטרציה של כיוון קדימה ולכן הוא ידוע בתור סמן חד-כיווני. לעומת זאת ListIterator הוא דו-כיווני המאפשר מעבר לשני הכיוונים.
Java Iterator: כיוון קדימהדוּגמָה: כאן נשתמש באיטרטור כדי לעבור ולהסיר אלמנטים מוזרים מ-ArrayList.
Javaimport java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Creating an ArrayList of Integer type ArrayList<Integer> al = new ArrayList<>(); // Adding elements to the ArrayList for (int i = 0; i < 10; i++) { al.add(i); } // Printing the original list System.out.println('Original List: ' + al); // Creating an Iterator for the ArrayList Iterator<Integer> itr = al.iterator(); // Iterating through the list and removing odd elements while (itr.hasNext()) { // Getting the next element int i = itr.next(); System.out.print(i + ' '); // Removing odd elements if (i % 2 != 0) { itr.remove(); } } System.out.println(); // Printing the modified list after removal of odd elements System.out.println('Modified List: ' + al); } }
תְפוּקָה
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]
הֶסבֵּר: בדוגמה שלמעלה אנו יוצרים ArrayList של מספרים שלמים ואז חוזרים דרכו באמצעות איטרטור ומסירים את כל המספרים האי-זוגיים. הוא מדפיס את הרשימה לפני ואחרי הסרת הרכיבים האי-זוגיים ומדפיס את הרשימה ששונתה עם מספרים זוגיים בלבד.