Ένα αντικείμενο Iterator χρησιμοποιείται για την επανάληψη ή διάσχιση συλλογών, όπως οι ArrayList και HashSet, με σκοπό την ανάκτηση των στοιχείων τους. Ο όρος “iterator” χρησιμοποιείται επειδή αναφέρεται στην επανάληψη ή διάσχιση των στοιχείων της συλλογής.
Για να χρησιμοποιήσετε ένα Iterator, πρέπει να το εισαγάγετε από το πακέτο java.util.
Μπορείτε να χρησιμοποιήσετε τη μέθοδο iterator() για να αποκτήσετε ένα Iterator για οποιαδήποτε συλλογή (collection).
import java.util.ArrayList; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { // Δημιουργία μιας νέας λίστας ArrayList με στοιχεία τύπου String ArrayList<String> cars = new ArrayList<String>(); // Προσθήκη αυτοκινήτων στη λίστα cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); // Δημιουργία ενός Iterator για περιήγηση στα στοιχεία της λίστας Iterator<String> it = cars.iterator(); // Επανάληψη μέχρι να μην υπάρχουν άλλα στοιχεία while (it.hasNext()) { // Εκτύπωση του επόμενου στοιχείου της λίστας System.out.println(it.next()); } } }
Ο παραπάνω κώδικας πραγματοποιεί τα εξής:
- Δημιουργεί μια νέα λίστα με όνομα “cars” που περιέχει στοιχεία τύπου String.
- Προσθέτει αυτοκίνητα στη λίστα “cars” με τη χρήση της μεθόδου add().
- Δημιουργεί έναν Iterator με όνομα “it” για να περιηγηθεί στα στοιχεία της λίστας “cars”.
- Ξεκινά μια επανάληψη while για να ελέγξει αν υπάρχουν άλλα στοιχεία στη λίστα.
- Εκτυπώνει το επόμενο στοιχείο της λίστας χρησιμοποιώντας τη μέθοδο next() του Iterator.
- Η επανάληψη συνεχίζει μέχρι να διατρέξει όλα τα στοιχεία της λίστας “cars” και να μην υπάρχουν πλέον επόμενα στοιχεία.
Συνολικά, ο κώδικας εκτυπώνει τα αυτοκίνητα που περιέχονται στη λίστα “cars” στη σειρά που έχουν προστεθεί.
Για να διαπεράσετε μια συλλογή, χρησιμοποιήστε τις μεθόδους hasNext() και next() του Iterator:
import java.util.ArrayList; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { // Δημιουργία μιας ArrayList με στοιχεία τύπου String ArrayList<String> cars = new ArrayList<String>(); // Προσθήκη στοιχείων στην ArrayList cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); // Δημιουργία Iterator για περιήγηση στα στοιχεία της ArrayList Iterator<String> it = cars.iterator(); // Επανάληψη μέχρι να μην υπάρχουν άλλα στοιχεία while (it.hasNext()) { // Εκτύπωση του επόμενου στοιχείου System.out.println(it.next()); } } }
Ο κώδικας αυτός δημιουργεί μια ArrayList με ονόματα αυτοκινήτων και χρησιμοποιεί έναν Iterator για να περιηγηθεί στα στοιχεία της λίστας και να τα εκτυπώσει στην οθόνη.
Συγκεκριμένα, ο κώδικας περιέχει τα εξής βήματα:
- Δημιουργία μιας ArrayList με ονόματα αυτοκινήτων:
ArrayList<String> cars = new ArrayList<String>();
- Προσθήκη στοιχείων στην ArrayList:
cars.add("Volvo");
,cars.add("BMW");
,cars.add("Ford");
,cars.add("Mazda");
- Δημιουργία ενός Iterator για περιήγηση στα στοιχεία της ArrayList:
Iterator<String> it = cars.iterator();
- Επανάληψη μέσω του Iterator μέχρι να μην υπάρχουν άλλα στοιχεία:
while (it.hasNext()) { ... }
- Εκτύπωση του επόμενου στοιχείου με τη χρήση της
System.out.println()
:System.out.println(it.next());
Έτσι, ο κώδικας εκτυπώνει στην οθόνη τα ονόματα των αυτοκινήτων που περιέχονται στην ArrayList, ένα-ένα, σε διαδοχικές γραμμές.
Οι Iterators σχεδιάστηκαν για να επιτρέπουν την εύκολη αλλαγή των συλλογών στις οποίες διαπερνούν. Η μέθοδος remove() μπορεί να αφαιρέσει στοιχεία από μια συλλογή κατά τη διάρκεια της διαπέρασης:
import java.util.ArrayList; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { // Δημιουργία μιας ArrayList για αποθήκευση αυτοκινήτων ArrayList<String> cars = new ArrayList<String>(); // Προσθήκη αυτοκινήτων στη λίστα cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); // Δημιουργία Iterator για περιήγηση στα αυτοκίνητα Iterator<String> it = cars.iterator(); // Επανάληψη μέχρι να μην υπάρχουν άλλα αυτοκίνητα while (it.hasNext()) { // Ανάκτηση του επόμενου αυτοκινήτου από το Iterator String car = it.next(); // Έλεγχος εάν το αυτοκίνητο είναι "Ford" if (car.equals("Ford")) { // Αφαίρεση του αυτοκινήτου από τη λίστα με τη χρήση του Iterator it.remove(); } } // Εκτύπωση της ενημερωμένης λίστας αυτοκινήτων System.out.println(cars); } }
Ο παραπάνω κώδικας παρουσιάζει τη χρήση του Iterator για την περιήγηση και τροποποίηση μιας ArrayList. Οι βασικές λειτουργίες του κώδικα είναι οι εξής:
- Δημιουργία μιας ArrayList με ονομασία “cars” και προσθήκη αυτοκινήτων σε αυτήν.
- Δημιουργία ενός Iterator με τη χρήση της μεθόδου iterator() της ArrayList για να περιηγηθούμε στα στοιχεία της.
- Χρησιμοποίηση της while επανάληψης για να ελέγξουμε αν υπάρχουν άλλα αυτοκίνητα στη λίστα.
- Μέσα στη while επανάληψη, αποθηκεύουμε το επόμενο αυτοκίνητο από το Iterator σε μια μεταβλητή με ονομασία “car”.
- Ελέγχουμε εάν το αυτοκίνητο είναι ίσο με τη συγκεκριμένη τιμή “Ford”.
- Αν το αυτοκίνητο είναι “Ford”, χρησιμοποιούμε τον Iterator για να το αφαιρέσουμε από τη λίστα.
- Η διαδικασία επαναλαμβάνεται μέχρι να εξεταστούν όλα τα αυτοκίνητα.
- Τέλος, εκτυπώνουμε την ενημερωμένη λίστα αυτοκινήτων με τη χρήση της μεθόδου println().