java iterator learn use iterators java with examples
Σε αυτό το σεμινάριο, θα μάθουμε για τους Iterators στην Java. Θα έχουμε λεπτομερή συζήτηση για τις διεπαφές Iterator And ListIterator στην Java:
Εξερευνήσαμε τα πάντα για το Java Collection Framework και τις διάφορες υποστηρικτικές διεπαφές και τάξεις σε ένα από τα προηγούμενα σεμινάρια μας.
Όταν έχετε μια συλλογή, τότε θέλετε να αποκτήσετε πρόσβαση στα στοιχεία της, να προσθέσετε / αφαιρέσετε ή να επεξεργαστείτε τα στοιχεία. Για να κάνετε όλη αυτή την επεξεργασία μέσω ενός προγράμματος Java, θα πρέπει να μπορείτε να διασχίσετε τη συλλογή που χρησιμοποιείτε. Εδώ έρχεται η επανάληψη στην εικόνα.
Τι θα μάθετε:
- Τι είναι το Java Iterator;
- συμπέρασμα
Τι είναι το Java Iterator;
Στην Java, ένα Iterator είναι ένα κατασκεύασμα που χρησιμοποιείται για να διασχίσει ή να περάσει από τη συλλογή.
Για να χρησιμοποιήσετε ένα Iterator, πρέπει να πάρετε το αντικείμενο iterator χρησιμοποιώντας το ' επανάληψη () ' μέθοδος της διεπαφής συλλογής. Το Java Iterator είναι μια διεπαφή πλαισίου συλλογής και είναι μέρος του πακέτου 'java.util'. Χρησιμοποιώντας το Java Iterator μπορείτε να επαναλάβετε τη συλλογή αντικειμένων.
Η διεπαφή Java Iterator αντικαθιστά τον απαριθμητή που χρησιμοποιήθηκε νωρίτερα για να περάσει από μερικές απλές συλλογές όπως διανύσματα.
Οι κύριες διαφορές μεταξύ Java Iterator και Enumerator είναι:
- Σημαντική βελτίωση στα ονόματα μεθόδων.
- Μπορείτε να καταργήσετε στοιχεία μεθόδου από τη συλλογή που διασχίζεται χρησιμοποιώντας έναν επαναληπτικό.
Σε αυτό το σεμινάριο, θα συζητήσουμε τις λεπτομέρειες της διεπαφής Iterator και της διεπαφής ListIterator που είναι αμφίδρομη διεπαφή.
Τύποι επαναληπτικών
- Αριθμητής
- Επαναληπτής
- Λίστα επαναληπτών
Ένας αριθμητής χρησιμοποιείται σπάνια τώρα. Ως εκ τούτου, στη σειρά μαθημάτων μας, θα επικεντρωθούμε στις διεπαφές Iterator και ListIterator.
Διεπαφή Iterator στην Java
Η διεπαφή Iterator στην Java είναι μέρος του πλαισίου Συλλογές στο πακέτο «java.util» και είναι ένας δρομέας που μπορεί να χρησιμοποιηθεί για να περάσει από τη συλλογή αντικειμένων.
Η διεπαφή Iterator έχει τα ακόλουθα κύρια χαρακτηριστικά:
- Η διεπαφή Iterator είναι διαθέσιμη από το πλαίσιο συλλογής Java 1.2 και μετά.
- Διασχίζει τη συλλογή αντικειμένων ένα προς ένα.
- Ευρέως γνωστό ως 'Universal Java Cursor' καθώς λειτουργεί με όλες τις συλλογές.
- Αυτή η διεπαφή υποστηρίζει λειτουργίες «ανάγνωσης» και «κατάργησης», δηλαδή μπορείτε να καταργήσετε ένα στοιχείο κατά τη διάρκεια μιας επανάληψης χρησιμοποιώντας τον επαναληπτικό.
Η γενική αναπαράσταση της διεπαφής Iterator δίνεται παρακάτω:
Στη συνέχεια, ας ρίξουμε μια ματιά στις μεθόδους Iterator που αναφέρονται παραπάνω.
Μέθοδοι επανάληψης
Η διεπαφή Iterator υποστηρίζει τις ακόλουθες μεθόδους:
# 1) Επόμενο ()
Πρωτότυπο: Ε επόμενο ()
Παράμετροι: χωρίς παραμέτρους
Τύπος επιστροφής: E -> στοιχείο
Περιγραφή: Επιστρέφει το επόμενο στοιχείο στη συλλογή.
Εάν η επανάληψη (συλλογή) δεν έχει περισσότερα στοιχεία, τότε ρίχνει NoSuchElementException .
# 2) hasNext ()
Πρωτότυπο: boolean hasNext ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής: true => υπάρχουν στοιχεία στη συλλογή.
False => όχι περισσότερα στοιχεία
Περιγραφή: Η συνάρτηση hasNext () ελέγχει εάν υπάρχουν περισσότερα στοιχεία στη συλλογή όπου γίνεται πρόσβαση μέσω επαναληπτικού. Εάν δεν υπάρχουν περισσότερα στοιχεία, τότε δεν καλείτε την επόμενη () μέθοδο. Με άλλα λόγια, αυτή η συνάρτηση μπορεί να χρησιμοποιηθεί για να αποφασίσει εάν πρόκειται να κληθεί η επόμενη () μέθοδος.
# 3) αφαίρεση ()
Πρωτότυπο: ακύρωση αφαίρεσης ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής: ΜΗΔΕΝ
Περιγραφή: Καταργεί το τελευταίο στοιχείο που επέστρεψε από τον επαναληπτικό που επαναλαμβάνει την υποκείμενη συλλογή. Η μέθοδος κατάργησης () μπορεί να κληθεί μόνο μία φορά ανά επόμενη κλήση ().
Εάν ο επαναληπτής δεν υποστηρίζει τη λειτουργία αφαίρεσης, τότε ρίχνει UnSupportedOperationException . Ρίχνει IlegalStateException εάν η επόμενη μέθοδος δεν έχει ακόμη καλέσει.
# 4) γιαEachRemaining ()
Πρωτότυπο: void forEachRemaining (καταναλωτής super ΕΙΝΑΙ > δράση)
Παράμετροι: action => δράση που πρέπει να εκτελεστεί
Τύπος επιστροφής: κενός
Περιγραφή: Εκτελεί την καθορισμένη ενέργεια σε καθένα από τα υπόλοιπα στοιχεία της συλλογής έως ότου όλα τα στοιχεία εξαντληθούν ή η ενέργεια ρίξει μια εξαίρεση. Οι εξαιρέσεις που προέρχονται από δράση μεταδίδονται στον καλούντα.
Εάν η δράση είναι άκυρη, τότε αυξάνεται nullPointerException . Αυτή η λειτουργία είναι μια νέα προσθήκη στη διεπαφή Iterator στο Java 8.
Παράδειγμα Iterator Java
Ας εφαρμόσουμε ένα πρόγραμμα Java για να δείξουμε τη χρήση της διεπαφής Iterator. Το παρακάτω πρόγραμμα δημιουργεί μια λίστα λουλουδιών. Στη συνέχεια, παίρνει έναν επαναληπτικό χρησιμοποιώντας τη μέθοδο iterator () του ArrayList. Μετά από αυτό, η λίστα διασχίζεται για εμφάνιση κάθε στοιχείου.
import java.util.*; public class Main { public static void main(String() args) { List flowers = new ArrayList(); flowers.add('Rose'); flowers.add('Jasmine'); flowers.add('sunflower'); // Get Iterator IteratorflowersIterator = flowers.iterator(); System.out.println('Contents of ArrayList:'); // Traverse elements using iterator while(flowersIterator.hasNext()){ System.out.print(flowersIterator.next() + ' '); } } }
Παραγωγή:
Περιορισμοί της διεπαφής Iterator
- Η λειτουργία αντικατάστασης ενός στοιχείου ή προσθήκης ενός νέου στοιχείου δεν μπορεί να εκτελεστεί με αυτόν τον Iterator.
- Η επανάληψη προχωρά μόνο σε μία κατεύθυνση, δηλαδή προς τα εμπρός.
- Υποστηρίζει μόνο διαδοχική επανάληψη.
- Όταν πρόκειται να επαναληφθούν μεγάλοι όγκοι δεδομένων, τότε επηρεάζεται η απόδοση του Iterator.
Iterator VsΕπαληθεύσιμο
Αν και οι διεπαφές Iterable και Iterator ακούγονται παρόμοια, είναι εντελώς διαφορετικές. Μια κλάση που εφαρμόζει την Iterable διεπαφή αποκτά τη δυνατότητα να επαναλάβει τα αντικείμενα της κλάσης που χρησιμοποιούν τη διεπαφή iterator.
Παρακάτω αναφέρονται μερικές από τις κύριες διαφορές μεταξύ αυτών των δύο διεπαφών που πρέπει να γνωρίζετε:
Iterable διασύνδεση | Διεπαφή Iterator |
---|---|
Αντιπροσωπεύει μια συλλογή που μπορεί να διασταυρωθεί χρησιμοποιώντας το βρόχο foreach. | Επιτρέπει την επανάληψη σε κάποια άλλη συλλογή. |
Η κλάση που εφαρμόζει την επαναληπτική διεπαφή πρέπει να παρακάμψει τη μέθοδο iterator (). | Οι μέθοδοι hasNext () και next () της διεπαφής Iterator πρέπει να παρακαμφθούν από την κλάση που την εφαρμόζει. |
Δεν αποθηκεύει την τρέχουσα κατάσταση. | Αποθηκεύει την τρέχουσα κατάσταση επανάληψης. |
Κάθε φορά που καλείται η μέθοδος iterator () πρέπει να δημιουργείται μια παρουσία της διεπαφής iterator. | Δεν υπάρχει τέτοια σύμβαση για τη διεπαφή επανάληψης. |
Κινείται μόνο προς τα εμπρός. | Κινείται προς τα εμπρός και υποσυνδέσεις όπως το listIterator υποστηρίζει αμφίδρομη διέλευση. |
Δεν παρέχει καμία μέθοδο τροποποίησης των στοιχείων κατά την επανάληψη. | Παρέχει τη μέθοδο κατάργησης που μπορεί να αφαιρέσει στοιχείο όταν η επανάληψη βρίσκεται σε εξέλιξη. |
Διεπαφή ListIterator στην Ιάβα
Η διεπαφή ListIterator είναι μια υποσύνδεση της διεπαφής iterator. Λειτουργεί σε συλλογές τύπων λίστας όπως Linkedlists, λίστες συστοιχιών κ.λπ. Έτσι, αυτή η διεπαφή υπερνικά τα μειονεκτήματα της διεπαφής Iterator.
Τα κύρια χαρακτηριστικά της διεπαφής ListIterator περιλαμβάνουν:
- Η διεπαφή ListIterator επεκτείνει τη διεπαφή Iterator.
- Η διεπαφή ListIterator υποστηρίζει λειτουργίες CRUD, δηλαδή Δημιουργία, Ανάγνωση, Ενημέρωση και Διαγραφή.
- Υποστηρίζει την επανάληψη προς τα εμπρός καθώς και προς τα πίσω.
- Καθώς αυτή η διεπαφή είναι αμφίδρομη, ο δρομέας τοποθετείται πάντα μεταξύ των προηγούμενων και των επόμενων στοιχείων.
- Αυτή η διεπαφή λειτουργεί κυρίως για υλοποιήσεις λίστας όπως ArrayList, LinkedList κ.λπ.
- Διαθέσιμο από Java 1.2
Η διεπαφή ListIterator παρουσιάζεται όπως φαίνεται παρακάτω:
Όπως αναφέρθηκε ήδη, η διεπαφή ListIterator επεκτείνει τη διεπαφή Iterator. Έτσι, εκτός από την υποστήριξη όλων των μεθόδων διεπαφής επαναληπτικού, όπως απεικονίζεται παραπάνω, η διεπαφή ListIterator έχει επίσης δικές της μεθόδους που τη βοηθούν να εκτελεί λειτουργίες CRUD καθώς και αμφίδρομη επανάληψη.
Ας συζητήσουμε λεπτομερώς τις μεθόδους ListIterator.
Μέθοδοι ListIterator
Σημειώστε ότι οι μέθοδοι διεπαφής Iterator, next (), hasNext () και remove () λειτουργούν ακριβώς, με τον ίδιο τρόπο, όπως η διεπαφή ListIterator. Ως εκ τούτου, θα παραλείψουμε αυτές τις μεθόδους σε αυτήν την ενότητα. Εκτός από τις παραπάνω μεθόδους, το ListIterator έχει τις ακόλουθες μεθόδους:
Προηγούμενος()
Πρωτότυπο: E προηγούμενο ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής:
E- προηγούμενο στοιχείο στη λίστα.
- 1 - εάν ο επαναληπτής βρίσκεται στην αρχή της λίστας.
Περιγραφή: Αυτή η συνάρτηση επιστρέφει το προηγούμενο στοιχείο στη λίστα. Μόλις επιστραφεί το προηγούμενο στοιχείο, ο δρομέας μετακινείται προς τα πίσω στο επόμενο στοιχείο.
hasPre sebelumnya ()
Πρωτότυπο: boolean has Προηγούμενο ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής: true => ο επαναληπτής έχει περισσότερα στοιχεία όταν η λίστα διασχίζεται προς τα πίσω.
Περιγραφή: Αυτή η συνάρτηση ελέγχει εάν το ListIterator έχει περισσότερα στοιχεία στην κατεύθυνση προς τα πίσω.
previousIndex
Πρωτότυπο: int previousIndex ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής:
int - ευρετήριο του προηγούμενου στοιχείου
- 1 - εάν ο δείκτης βρίσκεται στην αρχή της λίστας.
Περιγραφή: Επιστρέφει το ευρετήριο του προηγούμενου στοιχείου που επιστρέφεται από την προηγούμενη () κλήση.
nextIndex
Πρωτότυπο: int nextIndex ()
Παράμετροι: ΜΗΔΕΝ
Τύπος επιστροφής:
int - επόμενος δείκτης
- 1 - εάν ο επαναληπτής βρίσκεται στο τέλος της λίστας.
Περιγραφή: Επιστρέφει τον επόμενο ευρετήριο του στοιχείου στη λίστα. Αυτό το στοιχείο επιστρέφεται με μια μέθοδο κλήσης στην επόμενη ().
σειρά()
Πρωτότυπο: άκυρο σετ (E και)
Παράμετροι: e - στοιχείο που πρέπει να αντικατασταθεί
Τύπος επιστροφής: ΜΗΔΕΝ
Περιγραφή: Χρησιμοποιείται για την αντικατάσταση του τελευταίου στοιχείου με το δεδομένο στοιχείο e.
Προσθήκη()
Πρωτότυπο: άκυρη προσθήκη (E e)
Παράμετροι: e - στοιχείο που θα προστεθεί
Τύπος επιστροφής: ΜΗΔΕΝ
Περιγραφή: Προσθέτει νέα στοιχεία στη λίστα σε μια θέση πριν από εκείνη του επόμενου () στοιχείου.
Παράδειγμα Iterator λίστας
Τώρα, γνωρίζουμε τι είναι το ListIterator και ποιες είναι οι διάφορες μέθοδοι που υποστηρίζονται από αυτό. Ας προχωρήσουμε και εφαρμόσουμε ένα πρόγραμμα Java για να δείξουμε το ListIterator.
Σε αυτό το πρόγραμμα, χρησιμοποιήσαμε το ArrayList. Στη συνέχεια, χρησιμοποιούμε τις μεθόδους ListIterator για να διασχίσουμε τη λίστα προς τα εμπρός καθώς και προς τα πίσω και να εμφανίσουμε την έξοδο.
import java.util.*; class Main { public static void main(String args()) { Listnum_list = new ArrayList(); // Add Elements to ArrayList num_list.add(1); num_list.add(3); num_list.add(5); num_list.add(7); num_list.add(9); // Creatinge a ListIterator ListIteratorlist_it = num_list.listIterator(); System.out.println('Output using forward iteration:'); while (list_it.hasNext()) System.out.print(list_it.next()+' ') ; System.out.print('
Output using backward iteration:
') ; while (list_it.hasPrevious()) System.out.print(list_it.previous()+' '); } }
Παραγωγή:
Μέχρι στιγμής έχουμε συζητήσει τις διεπαφές, τον επαναληπτικό και το Listiterator, στη συνέχεια θα δούμε τα διάφορα παραδείγματα χρήσης αυτών των διεπαφών για να διασχίσουμε διαφορετικές συλλογές. Αλλά πρώτα, ας δούμε το πέρασμα των απλών συστοιχιών και μετά να προχωρήσουμε σε άλλες συλλογές.
Array Iterator
Στην Java, υπάρχουν δύο τρόποι για να επαναλάβετε τα στοιχεία του πίνακα. Ας περιγράψουμε τους τρόπους χρήσης παραδειγμάτων κώδικα.
# 1) για βρόχο
Αυτός είναι ο απλούστερος τρόπος επανάληψης ενός πίνακα. Χρησιμοποιούμε ένα απλό για βρόχο που θα αυξάνει το ευρετήριο με κάθε επανάληψη και θα εμφανίζει τα περιεχόμενά του.
import java.util.*; public class Main { public static void main(String() args) { int myArray() = {2,4,6,8,10,12,14}; int num; System.out.println('Array contents using for loop:'); for (int i = 0; i Παραγωγή:

Το παραπάνω πρόγραμμα εμφανίζει τα περιεχόμενα του πίνακα χρησιμοποιώντας το loop.
# 2) για κάθε βρόχο
Αυτός είναι ο δεύτερος τρόπος για να επαναλάβετε τις συστοιχίες. Εδώ χρησιμοποιούμε ένα εξειδικευμένο για βρόχο ή βρόχο «forEach». Εδώ βγαίνουμε μέσω του πίνακα για κάθε στοιχείο και στη συνέχεια προβάλλουμε τα περιεχόμενα.
import java.util.*; public class Main { public static void main(String() args) { int myArray() = {2,4,6,8,10,12,14}; int num; System.out.println('Array contents using for each loop:'); for (int i :myArray) { // accessing each element of array num = i; System.out.print(num + ' '); } } }
Παραγωγή:

Το forEach είναι πιο βελτιστοποιημένο σε σύγκριση με το loop. Είναι πιο σύντομο να πληκτρολογείτε και είναι επίσης πιο γρήγορο.
Επαναληπτική λίστα ArrayList
Σε περίπτωση που θέλετε να διασχίσετε μια συλλογή ArrayList, μπορείτε να το κάνετε χρησιμοποιώντας τη διεπαφή Iterator. Καθώς το iterator είναι μια διεπαφή, δεν μπορείτε να το δημιουργήσετε άμεσα. Αντ 'αυτού, μπορείτε να χρησιμοποιήσετε τη μέθοδο iterator () της συλλογής ArrayList για να λάβετε τον επαναληπτικό και στη συνέχεια να διασχίσετε τη λίστα.
Επανάληψη επανάληψης ();
Παράδειγμα για την επίδειξη του ArrayList Iterator.
import java.util.*; public class Main { public static void main(String() args) { ArrayListmyList = new ArrayList(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); myList.add('Brown'); myList.add('Pink'); myList.add('Purple'); Iteratorlist_it = myList.iterator(); System.out.println('Elements in the arrayList:'); while(list_it.hasNext()) System.out.print(list_it.next() + ' '); } }
Παραγωγή:

Iterator LinkedList
Τώρα ας δούμε τη λειτουργικότητα ενός επαναληπτικού σε περίπτωση συλλογής LinkedList.
Η συλλογή LinkedList υποστηρίζει τη μέθοδο listIterator () που επιστρέφει το listIterator για να διασχίσει τη συνδεδεμένη λίστα.
Η γενική μορφή για αυτήν τη συνάρτηση είναι
ListIterator list_iter = LinkedList.listIterator (int ευρετήριο);
Εδώ, το ευρετήριο είναι μια ακέραια τιμή που καθορίζει τη θέση στη συλλογή συνδεδεμένων λιστών από όπου πρέπει να ξεκινήσει η διέλευση.
Ας κατανοήσουμε τον επαναληπτή λίστας στη συνδεδεμένη λίστα με ένα δείγμα προγράμματος. Έχουμε τροποποιήσει το ίδιο πρόγραμμα επαναληπτικών συστοιχιών και το αλλάξαμε ώστε να περιέχει έναν καταχωρητή με το LinkedList.
import java.util.*; public class Main { public static void main(String() args) { LinkedListmyList = new LinkedList(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); myList.add('Brown'); myList.add('Pink'); myList.add('Purple'); ListIteratorlist_it = myList.listIterator(0); System.out.println('Elements in the LinkedList:'); while(list_it.hasNext()) System.out.print(list_it.next() + ' '); } }
Παραγωγή:
vr ακουστικά για xbox one x

Java Map / Hashmap Iterator
Ο χάρτης ή οι παραλλαγές του όπως hashmap, treemap κ.λπ. δεν είναι συλλογές. Ως εκ τούτου, δεν μπορείτε να χρησιμοποιήσετε απευθείας τη μέθοδο επανάληψης σε αυτό. Αντ 'αυτού, πρέπει να επαναλάβετε τις τιμές εισαγωγής κλειδιού για να διαβάσετε τα ζεύγη κλειδιών / τιμών.
Παρόλο που μπορείτε να χρησιμοποιήσετε διάφορες μεθόδους, όπως το ForEach, το loop κ.λπ. για να επαναλάβετε τις τιμές του χάρτη, η χρήση ενός επαναληπτικού για να επαναλάβετε τις βασικές τιμές είναι η καλύτερη και αποτελεσματική μέθοδος. Επιπλέον, μπορείτε επίσης να καταργήσετε καταχωρήσεις από το χάρτη κατά την επανάληψη χρησιμοποιώντας τη μέθοδο κατάργησης.
Παράδειγμα χρήσης του Iterator με HashMap.
import java.util.*; class Main { public static void main(String() arg) { MapmyMap = new HashMap(); // enter name/url pair myMap.put(1, 'India'); myMap.put(2, 'Nepal'); myMap.put(3, 'Maldives'); myMap.put(4, 'SriLanka'); System.out.println(' SAARC Member Countries '); System.out.println(' KEY' + ' ' + ' COUNTRY' ); // using iterators Iteratormap_itr = myMap.entrySet().iterator(); while(map_itr.hasNext()) { Map.Entrymap_entry = map_itr.next(); System.out.println(' ' + map_entry.getKey() + ' ' + map_entry.getValue()); } } }
Παραγωγή:

Στο παραπάνω πρόγραμμα, έχουμε ορίσει έναν χάρτη με ακέραια κλειδιά και τιμές τύπου συμβολοσειράς. Στη συνέχεια, ορίζουμε έναν επαναληπτικό πάνω από το χάρτη. Εισαγάγετε και εμφανίστε τα ζεύγη κλειδιών / τιμών.
Java Set Iterator
Η μέθοδος iterator () του Java.util.set χρησιμοποιείται για να πάρει τον επαναληπτικό που επιστρέφει τα στοιχεία στο σύνολο σε τυχαία σειρά.
Iterator set_iterator = Set.iterator();
Το 'set_iterator' επαναλαμβάνει τα διάφορα στοιχεία του συνόλου και επιστρέφει τις τιμές τους.
Με παρόμοιο τρόπο, το σετ κατακερματισμού περιέχει επίσης μια λειτουργία επανάληψης που επιστρέφει έναν επαναληπτικό όπως έναν επαναληπτικό συνόλου.
Iterator hashset_iterator = Hash_Set.iterator();
Δίνεται παρακάτω το παράδειγμα προγραμματισμού για την επίδειξη του επαναληπτικού προγράμματος.
import java.util.*; public class Main { public static void main(String args()) { HashSetsports_set = new HashSet(); sports_set.add('Hocky'); sports_set.add('Kabaddi'); sports_set.add('Football'); sports_set.add('Badminton'); sports_set.add('Cricket'); System.out.println('Sports HashSet: ' + sports_set); // Creating an iterator Iterator hashset_iter = sports_set.iterator(); // Displaying the values after iterating through the set System.out.println('
SportsSet iterator values:'); while (hashset_iter.hasNext()) { System.out.println(hashset_iter.next()); } } }
Παραγωγή:

Αυτή η εφαρμογή χρησιμοποιεί το Επαναληπτής HashSet και εμφανίζει μεμονωμένες τιμές επαναλαμβάνοντας τα στοιχεία HashSet.
Iterator εναντίον ListIterator
Ας παρουσιάσουμε τις κύριες διαφορές μεταξύ των διεπαφών Iterator και ListIterator.
Επαναληπτής Λίστα επαναληπτών Μπορεί να διασχίσει όλες τις συλλογές, συμπεριλαμβανομένων σετ, χάρτη κ.λπ. Μπορεί να χρησιμοποιηθεί για να διασχίσει μόνο τη συλλογή τύπων λίστας όπως ArrayList, LinkedList. Επαναλαμβάνει τη συλλογή μόνο προς τα εμπρός. Μπορεί να επαναλάβει τη συλλογή προς τα εμπρός και προς τα πίσω. Δεν είναι δυνατή η λήψη ευρετηρίων. Μπορεί να αποκτήσει ευρετήρια. Δεν υπάρχει τρόπος να προσθέσετε νέα στοιχεία στη συλλογή. Μπορείτε να προσθέσετε νέα στοιχεία στη συλλογή. Ο Iterator δεν μπορεί να τροποποιήσει τα στοιχεία κατά την επανάληψη. Το ListIterator μπορεί να τροποποιήσει τα στοιχεία της συλλογής χρησιμοποιώντας τη μέθοδο set ().
Συχνές Ερωτήσεις
Q # 1) Τι είναι η επανάληψη στην Java;
Απάντηση: Μια επανάληψη είναι μια διαδικασία με την οποία ένα μπλοκ κώδικα εκτελείται επανειλημμένα έως ότου μια δεδομένη συνθήκη διατηρεί ή δεν υπάρχει. Χρησιμοποιώντας την επανάληψη μπορείτε να διασχίσετε μια ακολουθία στοιχείων ή να επεξεργαστείτε τα δεδομένα.
Ε # 2) Πόσοι τύποι επαναληπτών υπάρχουν στην Java;
Απάντηση: Οι επαναληπτές χρησιμοποιούνται για να διασχίζουν τις συλλογές στην Java.
Υπάρχουν τρεις τύποι επαναληπτών στην Java:
- Αριθμητές
- Επαναληπτές
- Λίστα επαναληπτών
Q # 3) Πώς μπορώ να χρησιμοποιήσω ένα Iterator στην Java;
Απάντηση: Για να χρησιμοποιήσετε τον επαναληπτή για να διασχίσετε τη συλλογή, πρώτα, πρέπει να πάρετε τον επαναληπτικό χρησιμοποιώντας τη μέθοδο iterator () της καθορισμένης συλλογής.
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε τις μεθόδους hasNext () και next () του iterator για να λάβετε το στοιχείο.
Q # 4) Γιατί χρησιμοποιείται το Iterator αντί για βρόχο;
Απάντηση: Τόσο ο επαναληπτικός όσο και ο βρόχος χρησιμοποιείται για την επαναλαμβανόμενη εκτέλεση ενός συγκεκριμένου μπλοκ κώδικα. Αλλά η κύρια διαφορά είναι ότι στο loop δεν μπορείτε να αλλάξετε ή να τροποποιήσετε το περιεχόμενο της συλλογής. Ακόμα κι αν προσπαθήσετε να το τροποποιήσετε, θα εμφανίσει ταυτόχρονηModificationException. Χρησιμοποιώντας τον επαναληπτή μπορείτε να καταργήσετε ένα στοιχείο από τη συλλογή.
Ε # 5) Γιατί χρειαζόμαστε το Iterator στην Java;
Απάντηση: Το Iterator σάς βοηθά να ανακτήσετε τα στοιχεία της συλλογής ή ένα δοχείο χωρίς ο προγραμματιστής να γνωρίζει την εσωτερική δομή ή τη λειτουργία της συλλογής. Είναι πιο κομψά, καταναλώνουν λιγότερη μνήμη και επίσης ο προγραμματιστής δεν διαθέτει γραπτό κώδικα.
Δεύτερον, τα στοιχεία μπορούν να αποθηκευτούν στη συλλογή με οποιονδήποτε τρόπο, αλλά χρησιμοποιώντας έναν επαναληπτικό, ο προγραμματιστής μπορεί να τα ανακτήσει ακριβώς όπως μια λίστα ή οποιαδήποτε άλλη ακολουθία.
συμπέρασμα
Συζητήσαμε τους επαναληπτές στην Java που χρησιμοποιούνται με συλλογές σε αυτό το σεμινάριο. Αυτή η γνώση των επαναληπτών θα βοηθήσει τους αναγνώστες να κατανοήσουν τις συλλογές που πρόκειται να μάθουμε στα επόμενα σεμινάριά μας.
Συνιστώμενη ανάγνωση
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Ανάπτυξη Java: Δημιουργία και εκτέλεση αρχείου Java JAR
- Java «αυτό» Λέξη-κλειδί: Εκμάθηση με παραδείγματα κώδικα
- Java Virtual Machine: Πώς βοηθά το JVM στην εκτέλεση της εφαρμογής Java
- Πρόσβαση τροποποιητών σε Java - Εκμάθηση με παραδείγματα
- Εκμάθηση Java Reflection με παραδείγματα
- C ++ Vs Java: Top 30 διαφορές μεταξύ C ++ και Java με παραδείγματα