listiterator interface java with examples
Αυτό το σεμινάριο εξηγεί τη διεπαφή ListIterator στη Java για να διασχίσει τις υλοποιήσεις λίστας. Θα μάθετε για το διάγραμμα κλάσης και τις μεθόδους της διασύνδεσης ListIterator:
Ακριβώς όπως το Iterator, η διεπαφή ListIterator παρέχει τη λειτουργικότητα για να διασχίσετε τις εφαρμογές λίστας στην Java και να αποκτήσετε πρόσβαση στα στοιχεία της λίστας.
=> Δείτε εδώ για να δείτε το A-Z Of Java Training Tutorials εδώ.
Τι θα μάθετε:
Διεπαφή ListIterator στην Ιάβα
Μερικά από τα κύρια χαρακτηριστικά της διεπαφής ListIterator παρατίθενται παρακάτω:
- Το ListIterator κυκλοφόρησε στην Java 1.2
- Το ListIterator είναι μια υπο-διεπαφή της διεπαφής Iterator, δηλαδή εκτείνεται από τη διεπαφή Iterator.
- Το ListIterator λειτουργεί μόνο με εφαρμογές λίστας.
- Το ListIterator υποστηρίζει όλες τις λειτουργίες, δηλαδή, Δημιουργία, Ανάγνωση, Ενημέρωση και Διαγραφή. (Συλλογικά ονομάζονται λειτουργίες CRUD).
- Το ListIterator είναι ένας αμφίδρομος Iterator και υποστηρίζει τους επαναληπτικούς και προς τα πίσω.
- Στην περίπτωση του ListIterator, δεν υπάρχει τρέχον στοιχείο. Η θέση του δρομέα δείχνει τη θέση μεταξύ του στοιχείου που επιστρέφεται με την προηγούμενη () μέθοδο και του στοιχείου που θα επιστραφεί με την επόμενη () μέθοδο.
Ας συζητήσουμε περισσότερα για αυτήν τη διεπαφή σε αυτό το σεμινάριο.
Διάγραμμα κλάσης ListIterator
Το ListIterator είναι μια διεπαφή που ανήκει στο πλαίσιο συλλογών API. Αυτή η διεπαφή επεκτείνεται από τη διεπαφή Iterator. Εκτός από την κληρονομικότητα των μεθόδων της διεπαφής Iterator, υποστηρίζει επίσης τις μεθόδους για αμφίδρομες επαναλήψεις και λειτουργίες CRUD.
Το διάγραμμα τάξης της διεπαφής ListIterator φαίνεται παρακάτω.
Το παραπάνω σχήμα δείχνει το διάγραμμα κλάσης της διεπαφής ListIterator. Στην επόμενη ενότητα, θα συζητήσουμε λεπτομερώς καθεμία από τις μεθόδους που φαίνονται στο σχήμα.
Μέθοδοι ListIterator
Η διεπαφή ListIterator παρέχει τις ακόλουθες μεθόδους όπως φαίνεται στον παρακάτω πίνακα.
Όνομα μεθόδου | Πρωτότυπο | Περιγραφή |
---|---|---|
αφαιρώ() | ακύρωση αφαίρεσης () | Καταργεί το τελευταίο στοιχείο που επιστρέφεται είτε με την επόμενη () είτε με την προηγούμενη () μέθοδο. |
hasNext () | boolean hasNext () | Ελέγχει εάν το listIterator έχει περισσότερα στοιχεία για να διασχίσει προς τα εμπρός. |
Επόμενο() | Ε επόμενο () | Επιστρέφει το επόμενο στοιχείο στη λίστα. Στη συνέχεια μετακινεί τον κέρσορα για να δείξει στο επόμενο στοιχείο. |
hasPre sebelumnya () | boolean has Προηγούμενο () | Ελέγχει εάν το ListIterator έχει περισσότερα στοιχεία προς τα πίσω / προς τα πίσω. |
προηγούμενος() | E προηγούμενο () | Επιστρέφει το προηγούμενο στοιχείο στη λίστα και μετακινεί τον κέρσορα σε μία θέση προς τα πίσω. |
nextIndex () | int nextIndex () | Επιστρέφει το ευρετήριο του στοιχείου που θα επιστραφεί με κλήση στην επόμενη () μέθοδο. |
previousIndex () | int previousIndex () | Επιστρέφει το ευρετήριο του στοιχείου που θα επιστραφεί με κλήση στην προηγούμενη () μέθοδο. |
επτά) | άκυρο σετ (E και) | Αντικαθιστά το τελευταίο στοιχείο που επιστρέφεται είτε με την επόμενη () είτε με την προηγούμενη () μέθοδο με τη νέα τιμή. |
προσθήκη (E) | άκυρη προσθήκη (E e) | Προσθέτει νέο στοιχείο στη λίστα. |
Στη συνέχεια, θα περιγράψουμε κάθε μία από αυτές τις μεθόδους λεπτομερώς.
# 1) hasNext ()
Πρωτότυπο: boolean hasNext ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής:
- true => Η λίστα έχει το επόμενο στοιχείο
- False => η λίστα δεν έχει περισσότερα στοιχεία
Περιγραφή: Αυτή η μέθοδος ελέγχει εάν το ListIterator έχει περισσότερα στοιχεία για να διασχίσει προς τα εμπρός. Εάν έχει περισσότερα στοιχεία, τότε αυτή η μέθοδος επιστρέφει αληθινή.
# 2) επόμενο ()
Πρωτότυπο: Ε επόμενο ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής: Ε => επόμενο στοιχείο στη λίστα.
Περιγραφή: Η επόμενη μέθοδος () επιστρέφει το επόμενο στοιχείο στη λίστα και μετακινεί τον κέρσορα στο επόμενο στοιχείο.
Εξαίρεση: NoSuchElementException - εάν το ListIterator δεν έχει επόμενο στοιχείο.
# 3) hasPre sebelumnya ()
Πρωτότυπο: boolean has Προηγούμενο ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής: true => το ListIterator έχει προηγούμενο στοιχείο
Περιγραφή: Ελέγχει εάν το ListIterator έχει περισσότερα στοιχεία προς τα πίσω / προς τα πίσω.
# 4) προηγούμενο ()
Πρωτότυπο: E προηγούμενο ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής: E => προηγούμενο στοιχείο στη λίστα
Περιγραφή: Αυτή η μέθοδος επιστρέφει το προηγούμενο στοιχείο στη λίστα ενώ διασχίζει προς τα πίσω και μετά μετακινεί τον κέρσορα προς τα πίσω.
Εξαίρεση: NoSuchElementException - εάν το ListIterator δεν έχει επόμενο στοιχείο.
# 5) nextIndex ()
Πρωτότυπο: int nextIndex ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής: int => ευρετήριο του στοιχείου που θα επιστραφεί με την επόμενη () μέθοδο ή το μέγεθος της λίστας εάν το ListIterator βρίσκεται στο τέλος της λίστας.
Περιγραφή: Αυτή η μέθοδος μπορεί να κληθεί πριν από την επόμενη () μέθοδο. Η μέθοδος nextIndex () επιστρέφει το ευρετήριο του στοιχείου που θα επιστραφεί με την επόμενη () μέθοδο. Εάν το ListIterator βρίσκεται στο τέλος της λίστας, τότε αυτή η μέθοδος επιστρέφει το μέγεθος της λίστας.
# 6) προηγούμενοIndex ()
Πρωτότυπο: int previousIndex ()
Παράμετροι: ΜΗΔΕΝ
δωρεάν πρόγραμμα λήψης μουσικής για αγορά Android
Αξία επιστροφής: int => ευρετήριο του στοιχείου που θα επιστραφεί με την προηγούμενη μέθοδο () ή -1 εάν το ListIterator βρίσκεται στην αρχή της λίστας.
Περιγραφή: Αυτή η μέθοδος μπορεί να κληθεί πριν από την προηγούμενη () μέθοδο. Η μέθοδος previousIndex () επιστρέφει το ευρετήριο του στοιχείου που θα επιστραφεί με την προηγούμενη () μέθοδο. Εάν το ListIterator βρίσκεται στην αρχή της λίστας, τότε η μέθοδος επιστρέφει -1.
# 7) αφαίρεση ()
Πρωτότυπο: ακύρωση αφαίρεσης ()
Παράμετροι: ΜΗΔΕΝ
Αξία επιστροφής: κενός
Περιγραφή: Η μέθοδος remove () διαγράφει το τελευταίο στοιχείο που επιστράφηκε είτε με την προηγούμενη () είτε με την επόμενη () μέθοδο. Η κλήση στη μέθοδο κατάργησης () μπορεί να πραγματοποιηθεί μόνο μία φορά ανά κλήση στην επόμενη () ή προηγούμενη () μέθοδο.
Εξαίρεση:
- UnsupportedOperationException - Το ListIterator δεν υποστηρίζει τη λειτουργία κατάργησης.
- IllegalStateException - Εάν η τρέχουσα λειτουργία βρίσκεται σε παράνομη κατάσταση, δηλαδή ούτε η επόμενη ούτε η προηγούμενη κλήση ακόμη ή μετά την κλήση στο επόμενο ή στο προηγούμενο, τότε η κλήση προσθήκης ή κατάργησης δεν έχει κληθεί.
# 8) σετ (Ε)
Πρωτότυπο: άκυρο σετ (E και)
Παράμετροι: e => νέο στοιχείο με το οποίο θα αντικατασταθεί το παλιό στοιχείο
Αξία επιστροφής: κενός
Περιγραφή: Η μέθοδος set () ορίζει το στοιχείο που επιστρέφεται είτε με προηγούμενη () είτε με την επόμενη () μέθοδο με τη νέα τιμή να μεταβιβάζεται ως όρισμα. Αυτή η μέθοδος μπορεί να κληθεί μόνο εάν η μέθοδος προσθήκης () ή κατάργησης () δεν καλείται μετά την τελευταία κλήση στη μέθοδο προηγούμενη () ή επόμενη ().
Εξαίρεση:
- UnsupportedOperationException - Το ListIterator δεν υποστηρίζει τη λειτουργία που έχει οριστεί.
- ClassCastException - Εάν το καθορισμένο στοιχείο δεν μπορεί να προστεθεί λόγω της κλάσης του.
- IllegalArgumentException - Εάν το στοιχείο / όρισμα που προστίθεται είναι παράνομο ή άκυρο.
- IllegalStateException - Εάν η τρέχουσα λειτουργία βρίσκεται σε παράνομη κατάσταση, δηλαδή ούτε η επόμενη ούτε η προηγούμενη κλήση ακόμη ή μετά την κλήση στο επόμενο ή στο προηγούμενο, η προσθήκη ή η κατάργηση δεν έχουν κληθεί.
# 9) προσθήκη (E)
Πρωτότυπο: άκυρη προσθήκη (E e)
Παράμετροι: e => νέο στοιχείο για προσθήκη στη λίστα
Αξία επιστροφής: κενός
Περιγραφή: Η μέθοδος add () χρησιμοποιείται για την προσθήκη ενός νέου στοιχείου στη λίστα. Το στοιχείο προστίθεται λίγο πριν το στοιχείο θα επιστρέψει το επόμενο (), εάν υπάρχει και μετά το στοιχείο που θα είχε επιστρέψει η προηγούμενη () μέθοδος.
Σημειώστε ότι, ως αποτέλεσμα της προσθήκης ενός στοιχείου, δεν θα υπήρχε καμία αλλαγή για να επιστρέψετε την τιμή του επόμενου () αλλά η προηγούμενη () μέθοδος θα επιστρέψει μόνο το προστιθέμενο στοιχείο.
Εξαίρεση:
- UnsupportedOperationException - Το ListIterator δεν υποστηρίζει τη μέθοδο προσθήκης.
- ClassCastException εάν ένα καθορισμένο στοιχείο που δεν μπορεί να προστεθεί λόγω της κλάσης του.
- IllegalArgumentException εάν το στοιχείο / όρισμα που προστίθεται είναι παράνομο ή μη έγκυρο.
Το ακόλουθο πρόγραμμα Java δείχνει μια επίδειξη όλων των παραπάνω μεθόδων ListIterator.
import java.util.*; public class Main{ public static void main(String args()){ //define list and add elements to it ListnameList=new ArrayList(); nameList.add('Savich'); nameList.add('Dane'); nameList.add('Lacey'); nameList.add(1,'James'); System.out.println('Original List:' + nameList); //define a list iterator for this list ListIterator list_itr=nameList.listIterator(); System.out.println('List elements in forward direction:'); //while there are still elements in the list, display next index and element while(list_itr.hasNext()){ System.out.println('Index:'+list_itr.nextIndex()+' Element:'+list_itr.next()); } //call set() method to set next value to 'Sally' list_itr.set('Sally'); System.out.println('
List after set('Sally'):' + nameList); //while there are elements in the list, display previous index and element System.out.println('
List elements in backward direction:'); while(list_itr.hasPrevious()){ System.out.println('Index:'+list_itr.previousIndex()+' Element:'+list_itr.previous()); } //call remove () method list_itr.remove(); System.out.println('List after remove():' + nameList); } }
Παραγωγή:
Διασύνδεση ListIterator σε Java Παραδείγματα
Ας δούμε ένα άλλο παράδειγμα χρήσης του ListIterator. Σε αυτό το πρόγραμμα, έχουμε μια λίστα με ακέραιες τιμές. Στη συνέχεια, χρησιμοποιώντας το ListIterator διασχίζουμε τη λίστα και εμφανίζουμε τα στοιχεία της λίστας.
Επίσης, επιλέγουμε μόνο ζυγά στοιχεία στο ArrayList και αλλάζουμε τις τιμές τους σε περίεργους αριθμούς χρησιμοποιώντας τις μεθόδους ListIterator.
import java.util.ArrayList; import java.util.ListIterator; public class Main { public static void main(String() args) { //define ArrayList and add values to it using for loop ArrayList intList = new ArrayList(); for (int i = 0; i <10; i++) intList.add(i+2); System.out.println('Original ArrayList:' + intList); // define the ListIterator ListIterator list_itr = intList.listIterator(); System.out.println('List elements using listIterator:'); //while list has more elements while (list_itr.hasNext()) { //retrieve next element int i = (Integer)list_itr.next(); // print the element System.out.print(i + ' '); // change only even numbers to odd by setting value = value +1 to current element if (i%2==0) { list_itr.set(i+1); // set method to change value } } System.out.println(); System.out.println('Final ArrayList of odd values:' + intList); } }
Παραγωγή:
Συχνές Ερωτήσεις
Q # 1) Τι σημαίνει επαναληπτικός;
Απάντηση: Το Iterator είναι μια διεπαφή που αποτελεί μέρος του πλαισίου Συλλογής στην Java. Αυτή η διεπαφή υπάρχει στο πακέτο java.util. Η διεπαφή επανάληψης χρησιμοποιείται για την επανάληψη της συλλογής αντικειμένων.
Q # 2) Τι είναι μια διεπαφή επανάληψης στην Java;
Απάντηση: Χρησιμοποιείται μια διεπαφή επανάληψης στη Java αντί των απαριθμήσεων που είχαν χρησιμοποιηθεί προηγουμένως στο Java Collection Framework. Η διεπαφή iterator υπάρχει στην Java από την έκδοση 1.2.
Χρησιμοποιώντας αυτήν τη διεπαφή μπορείτε να επαναλάβετε τις συλλογές Java και να επεξεργαστείτε τα στοιχεία συλλογής.
Q # 3) Ποια είναι η χρήση της μεθόδου listIterator () στην Java;
Απάντηση: Η μέθοδος listIterator () ανήκει στο πακέτο java.util. *. Αυτή η μέθοδος επιστρέφει έναν επαναληπτή λίστας για το συγκεκριμένο αντικείμενο λίστας που το επικαλέστηκε και μπορεί να χρησιμοποιηθεί για να διασχίσει τις λίστες και τα στοιχεία πρόσβασης. Το listIterator λειτουργεί μόνο σε εφαρμογές λίστας.
Q # 4) Είναι επαναληπτικό μια τάξη ή μια διεπαφή;
Απάντηση: Το Iterator δεν είναι ένα μάθημα αλλά ένα διεπαφή στην Java . Η διεπαφή Iterator μπορεί να εφαρμοστεί από τις άλλες κατηγορίες και να χρησιμοποιηθεί για επαναλήψεις μέσω στοιχείων λίστας ή συλλογής.
Ε # 5) Πόσοι τύποι επαναληπτικών υπάρχουν στην Java;
Απάντηση: Οι επαναληπτές στην Java είναι τριών τύπων:
- Απαριθμήσεις: Πρόκειται για μια διεπαφή που χρησιμοποιείται για την ανάγνωση των στοιχείων από συλλογές όπως Vector, hashtable κ.λπ. Κάθε στοιχείο αριθμείται ανάλογα με τη θέση του στη συλλογή.
- Επαναληπτής: Μπορείτε να ονομάσετε αυτήν τη διεπαφή καθολική καθώς μπορείτε να την εφαρμόσετε σε οποιοδήποτε αντικείμενο συλλογής για να διασχίσετε τη συλλογή. Πρόκειται για βελτιωμένη απαρίθμηση με λειτουργικότητα κατάργησης και δυνατότητα ανάγνωσης ενός στοιχείου.
- Λίστα επαναληπτών: Το ListIterator είναι μια διεπαφή που παρέχει αμφίδρομη επανάληψη, δηλαδή προς τα εμπρός και προς τα πίσω. Το ListIterator λειτουργεί μόνο με εφαρμογές λίστας, όπως LinkedList, ArrayList, κ.λπ.
συμπέρασμα
Η διεπαφή ListIterator στην Java προέρχεται από τη διεπαφή Iterator. Εκτός από την άμεση κληρονομιά των μεθόδων της διεπαφής Iterator, η διεπαφή listIterator εισάγει διάφορες δικές της μεθόδους που μπορούν να βοηθήσουν τον προγραμματιστή στην εκτέλεση αμφίδρομης επανάληψης.
Σε αυτό το σεμινάριο, έχουμε συζητήσει το διάγραμμα τάξης και τις διάφορες μεθόδους της διεπαφής ListIterator. Έχουμε επίσης δει την εφαρμογή αυτών των μεθόδων μαζί με τους τρόπους για να διασχίσουμε διάφορες λίστες.
=> Επισκεφθείτε εδώ για να δείτε τη σειρά εκπαίδευσης Java για όλους.
Συνιστώμενη ανάγνωση
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Java Iterator: Μάθετε να χρησιμοποιείτε Iterators στην Java με παραδείγματα
- Εκμάθηση μήκους σειράς Java με παραδείγματα κώδικα
- Jagged Array In Java - Εκμάθηση με παραδείγματα
- Reverse An Array In Java - 3 μέθοδοι με παραδείγματα
- Πώς να ταξινομήσετε μια σειρά σε Java - Tutorial με παραδείγματα
- Διακεκριμένες δυνατότητες Java 8 με παραδείγματα κώδικα