Διαφορά μεταξύ απαρίθμησης και ιχνηθέτη

Anonim

Ένταξη έναντι Ιτερτόρ

Υπάρχουν πολλές δομές δεδομένων που λειτουργούν ως συλλογές Java όπως Vectors, Hash πίνακες και κλάσεις που υλοποιούν Java Πλαίσιο συλλογών (π.χ. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap και LinkedHashSet). Υπάρχουν πολλοί τρόποι για την επανάληψη μέσω των επιμέρους στοιχείων των αντικειμένων της Java. Η Java παρέχει δύο διεπαφές για να διευκολύνει αυτή την εργασία. Η απαρίθμηση και το Iterator είναι δύο από τις διεπαφές που βρίσκονται στη java. util που παρέχουν λειτουργικότητα για την απαρίθμηση μέσω αλληλουχιών ή αντικειμένων με ένα σύνολο αντικειμένων. Ο Enumerator εισήχθη στο JDK 1. 0 και ο Iterator ο οποίος εισήχθη στο JDK 1. 2 ουσιαστικά αντιγράφει τη λειτουργικότητα του Enumerator (μέσα στο πλαίσιο συλλογών).

Τι είναι η απαρίθμηση;

Η απαρίθμηση είναι μια δημόσια διεπαφή στην Java που εισήχθη στο JDK 1. 0, η οποία παρέχει τη δυνατότητα να απαριθμείται μέσω ακολουθιών στοιχείων. Βρίσκεται κάτω από το java. χρήσιμο πακέτο. Όταν η διεπαφή απαρίθμησης υλοποιείται από ένα αντικείμενο, το αντικείμενο αυτό μπορεί να δημιουργήσει μια ακολουθία στοιχείων. Η διεπαφή απαρίθμησης έχει δύο μεθόδους. Η μέθοδος hasMoreElements () θα ελέγξει αν αυτή η απαρίθμηση περιέχει περισσότερα στοιχεία και το nextElement () επιστρέφει το επόμενο στοιχείο της ακολουθίας (αν υπάρχει τουλάχιστον ένα ακόμα). Με άλλα λόγια, καλώντας το nextElement () διαδοχικά, ο προγραμματιστής μπορεί να έχει πρόσβαση στα μεμονωμένα στοιχεία της σειράς. Για παράδειγμα, για να εκτυπώσετε όλα τα στοιχεία στο Vector v1 χρησιμοποιώντας τον Enumerator, μπορείτε να χρησιμοποιήσετε το ακόλουθο απόσπασμα κώδικα.

Καταμέτρηση e = v1. στοιχεία();

Ενώ (e. HasMoreLements ()) {

Σύστημα. έξω. println (e. nextElement ());

}

Ο απαριθμητής μπορεί επίσης να χρησιμοποιηθεί για τον καθορισμό της ροής εισόδου στα αντικείμενα SequenceInputStream.

Τι είναι το Iterator;

Το Iterator είναι μια δημόσια διεπαφή στην Java. util, που επιτρέπει την ερμηνεία μέσω αντικειμένων των αντικειμένων συλλογών που υλοποιούν το πλαίσιο συλλογών (όπως ArrayList, LinkedList, κλπ.). Αυτό εισήχθη στο JDK 1. 2 και αντικατέστησε τον Enumerator μέσα στο Java Collections Framework. Το Iterator έχει τρεις μεθόδους. Η μέθοδοςNext () ελέγχει αν υπάρχουν υπόλοιπα στοιχεία στη συλλογή και η επόμενη () μέθοδος επιστρέφει το επόμενο στοιχείο της σειράς. Η μέθοδος αφαίρεσης () μπορεί να χρησιμοποιηθεί για την αφαίρεση του τρέχοντος στοιχείου από την υποκείμενη συλλογή. Για παράδειγμα, για να εκτυπώσετε όλα τα στοιχεία στο Vector v1 χρησιμοποιώντας το Iterator, μπορείτε να χρησιμοποιήσετε το ακόλουθο απόσπασμα κώδικα.

Iterator i = v1. στοιχεία();

Ενώ (i. HasNext ()) {

Σύστημα. έξω. println (ε. επόμενο ());

}

Ποια είναι η διαφορά μεταξύ της απαρίθμησης και του Iterator;

Παρόλο που το Enumeration και το Iterator είναι δύο από τις διεπαφές που βρέθηκαν στη java.χρήσιμο πακέτο, το οποίο επιτρέπει την ερμηνεία / απαρίθμηση μέσω στοιχείων μιας σειράς, έχουν τις διαφορές τους. Στην πραγματικότητα, ο Iterator, ο οποίος εισήχθη μετά την απαρίθμηση, αντικαθιστά την απαρίθμηση εντός του πλαισίου συλλογών Java. Σε αντίθεση με την απαρίθμηση, το Iterator είναι ασφαλές. Αυτό σημαίνει ότι οι ταυτόχρονες τροποποιήσεις (στην υποκείμενη συλλογή) δεν επιτρέπονται όταν χρησιμοποιείται το Iterator. Αυτό είναι πολύ χρήσιμο σε περιβάλλοντα πολλαπλών σπειρωμάτων όπου υπάρχει πάντα ο κίνδυνος ταυτόχρονων τροποποιήσεων. Σε περίπτωση ταυτόχρονης τροποποίησης, το αντικείμενο Iterator θα πετάξει μια παράλληλη εξίσωση ConcurrentModificationException. Το Iterator έχει μικρότερα ονόματα μεθόδων σε σύγκριση με τον Enumerator. Επιπλέον, το iterator έχει την πρόσθετη λειτουργικότητα της διαγραφής στοιχείων κατά την επανάληψη (κάτι που δεν είναι δυνατό με τον Enumerator). Έτσι, αν υπάρχει ανάγκη να αφαιρεθούν στοιχεία από τη συλλογή, το Iterator είναι η μόνη επιλογή που μπορεί να ληφθεί υπόψη.