java collections framework tutorial
Αυτό το σεμινάριο εξηγεί το Java Συλλογές Πλαίσιο (JCF) λεπτομερώς μαζί με την Ιεραρχία Συλλογών, Διάφορες Διεπαφές και τα Πλεονεκτήματα του JCF:
Ελπίζω αυτά τα εύγλωττα μαθήματα σε αυτό Java Series για αρχάριους είναι πραγματικά χρήσιμα στον εμπλουτισμό των γνώσεών σας για την Java.
Το προηγούμενο σεμινάριό μας ενημέρωσε περισσότερα για το βασικές λειτουργίες εισόδου / εξόδου στην Java . Σε αυτό το σεμινάριο θα μάθουμε λεπτομερώς για το Java Collections Framework (JCF).
Το Java Collections Framework (JCF) περιέχει διεπαφές, αφηρημένες κλάσεις και κλάσεις που μπορούν να παρέχουν την αρχιτεκτονική για την αποθήκευση και τον χειρισμό μιας ομάδας αντικειμένων.
Τι θα μάθετε:
- Video Tutorials στο Java Συλλογές Πλαίσιο
- συμπέρασμα
Video Tutorials στο Java Συλλογές Πλαίσιο
Γνώση του Arraylist στην Java:
Ορίστε διεπαφή και διεπαφή ουράς σε Java με παραδείγματα σε πραγματικό χρόνο:
HashMap, TreeMap και HashTable σε Java:
Μέχρι στιγμής, έχουμε δει μεταβλητές που αποθηκεύουν διαφορετικούς τύπους δεδομένων. Αυτές είναι μοναδικές μονάδες και δεν είναι πολύ χρήσιμες όταν έχετε τεράστια ποσά δεδομένων για αποθήκευση και αντιμετώπιση. Όπως γνωρίζουμε, τα δεδομένα είναι το πιο σημαντικό συστατικό της επεξεργασίας υπολογιστών.
Η εφαρμογή σας πρέπει να είναι σε θέση να εξαγάγει και να συλλέξει δεδομένα, να την επεξεργαστεί για να ανακαλύψει χρήσιμες πληροφορίες και επίσης να τις μεταφέρει και από πίσω, έτσι ώστε να χρησιμοποιείται αποτελεσματικά για την εξεύρεση λύσεων.
Σε αυτόν τον κόσμο λογισμικού, αποθηκεύουμε τα δεδομένα που πρέπει να δομηθούν με συγκεκριμένο τρόπο, έτσι ώστε τα προγράμματα λογισμικού να είναι σε θέση να αποθηκεύουν, να διαβάζουν, να επεξεργάζονται και τελικά να εξάγουν τα αποτελέσματα. Αυτό γίνεται χρησιμοποιώντας δομές δεδομένων.
Σχεδόν όλες οι γλώσσες προγραμματισμού υποστηρίζουν δομές δεδομένων. Η δομή δεδομένων μπορεί να οριστεί ως δομημένη αναπαράσταση δεδομένων. Οι γλώσσες προγραμματισμού παρέχουν συναρτήσεις API (Application Programming Interface) προκειμένου να χειριστούν τις δομές δεδομένων.
Χρειάζεται πλαίσιο συλλογής
Πριν από την Java 1.2, η γλώσσα προγραμματισμού Java υποστήριζε δομές δεδομένων όπως πίνακες, διανύσματα ή πίνακες κατακερματισμού. Η εκτέλεση λειτουργιών σε αυτές τις δομές δεδομένων δεν ήταν εύκολη, καθώς δεν υπήρχε κοινή διεπαφή που λειτούργησε σε αυτές τις δομές δεδομένων.
Οι προγραμματιστές δυσκολεύονταν να γράψουν αλγόριθμους που θα λειτουργούσαν για όλες τις δομές δεδομένων και ήταν μια μεγάλη ταλαιπωρία. Υπήρχε η ανάγκη για μια κοινή διεπαφή που θα λειτουργούσε με συνέπεια σε όλες τις δομές δεδομένων και θα εκτελούσε επίσης αποτελεσματικά τις λειτουργίες.
Αργότερα, η Java βρήκε ένα πλαίσιο συλλογών που είναι μια ομάδα κλάσεων και διεπαφών που αποτελούνται από διάφορες λειτουργίες που μπορούν να εκτελεστούν σε δομές δεδομένων.
Σε αυτό το Εκπαιδευτικό Συλλογές Java, θα συζητήσουμε το Java Συλλογές Πλαίσιο γενικά. Θα εξερευνήσουμε κάθε ένα από τα στοιχεία της συλλογής στα επερχόμενα σεμινάρια μας.
Πλαίσιο συλλογών Java
Πριν ορίσουμε ένα Java Συλλογές Πλαίσιο, ας γνωρίσουμε το νόημα της συλλογής και ένα πλαίσιο.
Μια συλλογή μπορεί να οριστεί ως ομάδα αντικειμένων. Μια συλλογή είναι συνήθως μια μεμονωμένη μονάδα που αποτελείται από περισσότερα από ένα αντικείμενα. Ένα πλαίσιο είναι ένα λογισμικό που έχει μια έτοιμη λειτουργική διεπαφή ή αρχιτεκτονική και περιέχει επίσης ένα σύνολο κατηγοριών και διεπαφών που θα χρησιμοποιηθούν με την παρεχόμενη διεπαφή.
Ένα πλαίσιο συλλογών ορίζεται ως μια ενοποιημένη, έτοιμη αρχιτεκτονική που αποτελείται από τα παρακάτω.
# 1) Αλγόριθμοι
Αυτές είναι μέθοδοι ή σύνολο δηλώσεων που μπορούν να βοηθήσουν τους προγραμματιστές στην αναζήτηση, ταξινόμηση και επεξεργασία συλλεγόμενων δεδομένων. Η συλλογή διατίθεται με διεπαφές, τάξεις και αλγόριθμους.
Οι εφαρμογές που αναπτύσσονται μεταβιβάζοντας το πλαίσιο συλλογής έχουν πρόσβαση σε αυτούς τους αλγόριθμους και χρησιμοποιούν τις ήδη καθορισμένες μεθόδους και διαδικασίες.
# 2) Διεπαφές
Οι διεπαφές στην Java παρέχουν την αφαίρεση της εφαρμογής, δηλαδή χρησιμοποιώντας διεπαφές, ο χρήστης δεν γνωρίζει τις λεπτομέρειες της εφαρμογής, αλλά μπορεί να δει μόνο τις μεθόδους και τα δεδομένα που απαιτούνται για τη σύνταξη μιας εφαρμογής. Η διεπαφή συλλογής έχει πολλές διεπαφές που μπορούν να εφαρμοστούν από τον προγραμματιστή για να γράψουν τις δικές τους τάξεις.
# 3) Μαθήματα
Οι κλάσεις του πλαισίου συλλογής είναι δομές δεδομένων που μπορούν να εφαρμοστούν σε ένα πρόγραμμα. Αυτές οι τάξεις εφαρμόζουν τη διεπαφή «Συλλογή» και έτσι κληρονομούν όλες τις μεθόδους και τους ορισμούς της διεπαφής συλλογής.
Ένα πλαίσιο συλλογής χρησιμοποιείται για την αποθήκευση και τον χειρισμό της συλλογής που είναι η ομάδα αντικειμένων.
Το πλαίσιο συλλογής Java αποτελείται από αλγόριθμους υψηλής απόδοσης που εκτελούν τυπικές λειτουργίες όπως αναζήτηση, ταξινόμηση και επεξεργασία. Παρέχει διάφορες τυπικές υλοποιήσεις όπως LinkedList, TreeSet και HashSet για τις οποίες παρέχονται διεπαφές.
Στη συνέχεια, ας καταλάβουμε την Ιεραρχία Συλλογής Java.
Ιεραρχία Συλλογής Java
Όλες οι τάξεις και οι διεπαφές που εμφανίζονται στην παρακάτω ιεραρχία Java Collection ανήκουν στο πακέτο 'java.util. *'.
Όπως φαίνεται στο παραπάνω διάγραμμα, η Ιεραρχία Συλλογής Java αποτελείται από διάφορες κατηγορίες και διεπαφές. Όπως μπορείτε να δείτε, κάθε κλάση κληρονομεί από μια διεπαφή και όλες οι κλάσεις και οι διασυνδέσεις, με τη σειρά τους, κληρονομούν από μία μόνο διεπαφή «συλλογής».
Ας συζητήσουμε μερικές κοινές μεθόδους στη διεπαφή συλλογής μαζί με μια σύντομη εισαγωγή για κάθε μία από τις τάξεις και τις διεπαφές που εμφανίζονται στην παραπάνω ιεραρχία.
Διεπαφή συλλογής
Η διεπαφή Συλλογής είναι η διεπαφή ρίζας. Όλες οι τάξεις στο πλαίσιο συλλογής εφαρμόζουν τη διεπαφή συλλογής. Αυτό σημαίνει ότι κάθε συλλογή θα έχει τις μεθόδους που δηλώνονται στη διεπαφή συλλογής.
Μερικές από τις μεθόδους της διεπαφής συλλογής δίνονται παρακάτω.
Μην | Πρωτότυπο μεθόδου | Περιγραφή |
---|---|---|
7 | προεπιλεγμένη boolean removeIf (φίλτρο Predicate) | Καταργήστε όλα τα στοιχεία που ικανοποιούν το δεδομένο «φίλτρο» κατηγορίας από τη συλλογή. |
1 | δημόσιο μέγεθος int () | Επιστρέφει τον αριθμό των στοιχείων σε μια δεδομένη συλλογή. |
δύο | δημόσιο κενό () | Διαγράφει τη συλλογή αφαιρώντας όλα τα στοιχεία από τη συλλογή. |
3 | δημόσια boolean προσθήκη (E ε) | Εισάγει ένα στοιχείο e στη συλλογή. |
4 | δημόσια booleanaddΌλα (Συλλογή γ) | Εισαγάγετε όλα τα στοιχεία στη συλλογή που δίνονται από το c στη συλλογή. |
5 | public boolean remove (Στοιχείο αντικειμένου) | Διαγράψτε το στοιχείο που δόθηκε από το στοιχείο 'element' από τη συλλογή. |
6 | public boolean removeAll (Συλλογήc) | Αφαιρέστε τη συλλογή c από τη συλλογή. |
8 | δημόσια booleanretainΌλα (Συλλογή γ) | Διαγράψτε όλα τα στοιχεία από τη συλλογή εκτός από εκείνα της καθορισμένης συλλογής γ. |
9 | δημόσιο επαναληπτικό επαναληπτικό () | Επιστρέψτε τον επαναληπτικό για τη συλλογή. |
10 | δημόσιο αντικείμενο () toArray () | Μετατρέψτε τη συλλογή σε πίνακα. |
έντεκα | δημόσια T () toArray (T () a) | Μετατρέψτε τη συλλογή σε πίνακα με καθορισμένο τύπο επιστροφής. |
12 | δημόσια boolean isEmpty () | Επιστρέψτε εάν η συλλογή είναι κενή ή όχι. |
13 | public boolean περιέχει (στοιχείο αντικειμένου) | Ελέγξτε εάν μια συλλογή περιέχει το δεδομένο στοιχείο (λειτουργία αναζήτησης). |
14 | δημόσια booleancontainsΌλα (Collectionc) | Ελέγξτε εάν η συλλογή περιέχει καθορισμένη συλλογή c μέσα της. |
δεκαπέντε | προεπιλεγμένος διαχωριστής διαχωριστή () | Επιστρέφει το διαχωριστή σε μια καθορισμένη συλλογή. |
16 | δημόσια booleanequals (στοιχείο αντικειμένου) | Χρησιμοποιείται για αντιστοίχιση δύο συλλογών. |
17 | προεπιλεγμένη ροή παράλληλη ροή () | Επιστρέφει παράλληλη ροή χρησιμοποιώντας τη συλλογή ως πηγή. |
18 | προεπιλεγμένη ροή () | Επιστρέφει διαδοχική ροή χρησιμοποιώντας τη συλλογή ως πηγή. |
19 | δημόσιο int hashCode () | Επιστρέφει τον αριθμητικό κωδικό καταγραφής της συλλογής. |
Iterable διασύνδεση
Το Iterable interface είναι επίσης η βασική διεπαφή του πλαισίου συλλογής. Η διεπαφή Συλλογής που είναι η μητρική διεπαφή όλων των άλλων κατηγοριών επεκτείνει τη διασύνδεση Iterable. Ως εκ τούτου, όλες οι τάξεις εφαρμόζουν μια διεπαφή συλλογής καθώς και μια διεπαφή Iterable.
Η διασύνδεση Iterable έχει μόνο μία μέθοδο επανάληψης () που επιστρέφει τον επαναληπτικό () που μπορείτε να χρησιμοποιήσετε για να επαναλάβετε τα στοιχεία του τύπου T.
Iterator iterator ()
Διεπαφή Iterator
Η διεπαφή Iterator παρέχει τη δυνατότητα επανάληψης των στοιχείων προς τα εμπρός.
Ακολουθούν οι μέθοδοι που υποστηρίζονται από αυτήν τη διεπαφή.
Μην | Πρωτότυπο μεθόδου | Περιγραφή |
---|---|---|
1 | δημόσιο αντικείμενο επόμενο () | Πρώτα επιστρέφει το στοιχείο και, στη συνέχεια, μετακινεί τον κέρσορα για να δείχνει στο επόμενο στοιχείο. |
δύο | δημόσιο boolean hasNext () | Ελέγχει εάν ο επαναληπτής έχει περισσότερα στοιχεία. |
3 | δημόσιο κενό αφαίρεση () | Καταργεί το στοιχείο που επιστρέφεται από τον επαναληπτή στο τέλος. |
Διασύνδεση λίστας
Η διεπαφή λίστας κληρονομεί τη διεπαφή συλλογής. Η διεπαφή λίστας περιέχει τις δομές δεδομένων που χρησιμοποιούνται για την αποθήκευση διατεταγμένων δεδομένων ή συλλογής αντικειμένων. Αυτές οι δομές δεδομένων είναι τύπου λίστας. Αυτές οι δομές δεδομένων που εφαρμόζουν τη διεπαφή λίστας ενδέχεται να έχουν ή όχι διπλές τιμές.
Η διεπαφή λίστας περιέχει τις μεθόδους που χρησιμοποιούνται για πρόσβαση, εισαγωγή ή αφαίρεση στοιχείων από τα αντικείμενα λίστας.
Διάφορες κλάσεις που εφαρμόζουν τη διεπαφή λίστας είναι οι εξής:
c ++ αρχικοποίηση στατικής μεταβλητής
- Λίστα Array
- Συνδεδεμένη λίστα
- Διάνυσμα
- Σωρός
Θα συζητήσουμε για κάθε ένα από αυτά τα μαθήματα εν συντομία. Τα επόμενα θέματα μας θα έχουν μια λεπτομερή συζήτηση για κάθε μία από τις κατηγορίες πλαισίων συλλογής.
# 1) ArrayList
Το ArrayList είναι η απλούστερη εφαρμογή της διεπαφής λίστας. Το ArrayList διατηρεί τη σειρά εισαγωγής και δεν είναι συγχρονισμένη.
Ο γενικός ορισμός της δομής δεδομένων ArrayList (Συλλογή) έχει ως εξής:
List list1= new ArrayList ();
Μόλις οριστεί η λίστα, μπορείτε να χρησιμοποιήσετε τη μέθοδο 'προσθήκη' για να προσθέσετε στοιχεία. Σημειώστε ότι εσωτερικά το ArrayList χρησιμοποίησε μηχανισμό δυναμικής συστοιχίας.
Δείτε τα παρακάτω παραδείγματα που δημιουργούν μια συλλογή χρωμάτων ArrayList.
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Παραγωγή:
Το παραπάνω πρόγραμμα δείχνει την επίδειξη της συλλογής ArrayList. Προσθέτουμε τιμές χρώματος στη συλλογή και μετά διασχίζουμε τη συλλογή για να εμφανίσουμε μεμονωμένες τιμές στη συλλογή χρησιμοποιώντας έναν επαναληπτικό.
# 2) LinkedList
Η συλλογή LinkedList χρησιμοποιεί εσωτερικά έναν διπλά συνδεδεμένο μηχανισμό λίστας για την αποθήκευση στοιχείων. Μπορεί να περιέχει διπλά στοιχεία. Οι λειτουργίες συλλογής LinkedList είναι γρηγορότερες καθώς δεν απαιτείται αλλαγή στοιχείων.
Ο γενικός ορισμός της δημιουργίας μιας συνδεδεμένης λίστας έχει ως εξής:
List list2 = new LinkedList ();
Το παρακάτω πρόγραμμα δείχνει η συνδεδεμένη λίστα λίστας ονομάτων αριθμών .
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Παραγωγή:
Έτσι, δημιουργούμε μια συνδεδεμένη λίστα και στη συνέχεια προσθέτουμε στοιχεία σε αυτήν χρησιμοποιώντας τη μέθοδο «προσθήκη». Στη συνέχεια, χρησιμοποιώντας έναν επαναληπτικό, διασχίζουμε τη συνδεδεμένη λίστα και εμφανίζουμε κάθε στοιχείο.
# 3) Διάνυσμα
Το διάνυσμα είναι παρόμοιο με το ArrayList και χρησιμοποιεί μια δυναμική συστοιχία για την αποθήκευση στοιχείων όπως το ArrayList. Αλλά ο φορέας υποστηρίζει πολλές ανεξάρτητες μεθόδους εκτός από τη συλλογή που το καθιστά καλύτερη επιλογή να είναι μια προτιμώμενη συλλογή.
Ο γενικός ορισμός για τη συλλογή φορέων είναι:
List list3 = new Vector();
Σημειώστε ότι παρόλο που το διάνυσμα και το ArrayList χρησιμοποιούν τον ίδιο μηχανισμό δυναμικών συστοιχιών, τα διανυσματικά στοιχεία συγχρονίζονται.
Το πρόγραμμα Java που δίνεται παρακάτω δείχνει τη χρήση διανυσμάτων στο πλαίσιο συλλογής .
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Παραγωγή:
Σε αυτό το πρόγραμμα, έχουμε ορίσει μια διανυσματική συλλογή που αποτελείται από θέματα. Προσθέτουμε διάφορα θέματα και στη συνέχεια χρησιμοποιούμε έναν επαναληπτικό για την έξοδο των στοιχείων.
# 4) Στοίβα
Η δομή δεδομένων στοίβας εφαρμόζει τον τελευταίο τρόπο εισαγωγής στοιχείων. Η στοίβα είναι μια υποκατηγορία του διανύσματος κλάσης (ανατρέξτε στο διάγραμμα ιεραρχίας συλλογής παραπάνω). Εκτός από τις δικές του μεθόδους, η συλλογή στοίβας υποστηρίζει επίσης τις μεθόδους συλλογής διανυσμάτων.
Ο γενικός ορισμός της συλλογής Stack είναι:
List list4 = new Stack();
Το ακόλουθο πρόγραμμα υλοποιεί τη συλλογή Stack .
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Παραγωγή:
Όπως μπορείτε να δείτε στην παραπάνω εφαρμογή, τα νέα στοιχεία προστίθενται στη στοίβα χρησιμοποιώντας το 'Σπρώξτε' λειτουργία. Η στοίβα έχει ένα μόνο σημείο εισόδου που ονομάζεται «Κορυφή της στοίβας» και τα στοιχεία ωθούνται στη στοίβα στην κορυφή. Έτσι, το τελευταίο στοιχείο που προστέθηκε βρίσκεται στην κορυφή της στοίβας.
Όπως και η προσθήκη, τα στοιχεία αφαιρούνται επίσης από το ένα άκρο, δηλαδή στο επάνω μέρος της στοίβας. Για να αφαιρέσετε στοιχεία, χρησιμοποιείται μια λειτουργία «pop». Έτσι, εάν καλέσετε pop (), το στοιχείο στην κορυφή της στοίβας θα αφαιρεθεί.
Στην έξοδο παραπάνω, εισάγουμε το στοιχείο 2, 4, 6,8,10 και μετά καλούμε το pop () έτσι ώστε το 10 να αφαιρεθεί.
Διεπαφή ουράς
Οι συλλογές που προέρχονται από τη διεπαφή ουράς ακολουθούν τη σειρά first-in-first-out (FIFO). Τα στοιχεία εισάγονται στο ένα άκρο και αφαιρούνται από το άλλο άκρο. Εξ ου και το στοιχείο που εισάγεται πρώτα τυχαίνει να είναι το στοιχείο που αφαιρείται πρώτα.
Παρακάτω αναφέρονται οι συλλογές που υποστηρίζουν τη διεπαφή ερωτημάτων.
- ΠροτεραιότηταQueue
- και διασύνδεση
- ArrayDeque
Ας συζητήσουμε για όλα αυτά εν συντομία.
# 1) ΠροτεραιότηταQueue
Στη συλλογή PriorityQueue, τα αποθηκευμένα στοιχεία επεξεργάζονται με βάση τις προτεραιότητές τους. Δεν μπορείτε να αποθηκεύσετε μηδενικές τιμές στην ουρά προτεραιότητας.
Ο γενικός ορισμός της ουράς προτεραιότητας έχει ως εξής:
Queue q1 = new PriorityQueue();
Το παρακάτω πρόγραμμα υλοποιεί την ουρά προτεραιότητας.
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } }
Παραγωγή:
Για άλλη μια φορά χρησιμοποιούμε χρώματα ως στοιχεία της ουράς προτεραιότητας. Στο παραπάνω πρόγραμμα, χρησιμοποιήσαμε τις μεθόδους προσθήκης και αφαίρεσης για προσθήκη στοιχείων στην ουρά και κατάργηση ενός στοιχείου αντίστοιχα. Χρησιμοποιούμε τη μέθοδο peek () που επιστρέφει ένα στοιχείο στο οποίο δείχνει στην ουρά προτεραιότητας.
Τέλος, χρησιμοποιώντας έναν επαναληπτικό, εμφανίζονται τα στοιχεία της ουράς προτεραιότητας.
# 2) διεπαφή αφής
Το Deque ή μια 'ουρά διπλού άκρου' είναι μια δομή δεδομένων που σας επιτρέπει να προσθέσετε και να αφαιρέσετε τα στοιχεία και από τα δύο άκρα. Η διασύνδεση deque στο πλαίσιο συλλογής Java που επεκτείνει τη διεπαφή ουράς.
Παρέχει τη λειτουργικότητα του deque και έχει μια κλάση «ArrayDeque» που κληρονομεί από αυτήν.
# 3) ArrayDeque
Το ArrayDeque εφαρμόζει τη διασύνδεση deque.
Ο γενικός ορισμός του ArrayDeque έχει ως εξής:
Deque d = new ArrayDeque();
Το ArrayDeque σάς επιτρέπει να χρησιμοποιείτε τη λειτουργικότητα του Deque. Σε αντίθεση με άλλες συλλογές όπως το ArrayList ή το stack, το ArrayDeque δεν έχει περιορισμούς στη χωρητικότητά του.
Το ακόλουθο παράδειγμα δείχνει την εφαρμογή του ArrayDeque.
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, ορίζουμε μια συλλογή ArrayDeque τύπου ακέραιου τύπου και προσθέτουμε ακέραια στοιχεία σε αυτήν χρησιμοποιώντας τη μέθοδο προσθήκης. Στη συνέχεια, η συλλογή διασχίζεται χρησιμοποιώντας το για κατασκευή.
Ορισμός διεπαφής
Η καθορισμένη διεπαφή αποτελεί μέρος του πακέτου java.util και εκτείνεται από τη διεπαφή συλλογής. Το σύνολο είναι μια δομή που δεν επιτρέπει στη συλλογή να έχει διπλές τιμές και επίσης περισσότερες από μία μηδενικές τιμές.
Οι ακόλουθες τάξεις εφαρμόζουν το σετ διεπαφής.
πώς να συντάξετε αυτοματοποιημένα σενάρια δοκιμής
- HashSet
- LinkedHashSet
- TreeSet
# 1) HashSet
Η συλλογή HashSet που εφαρμόζει το Set interface έχει ξεχωριστές τιμές αποθηκευμένες σε αυτήν. Αυτή η συλλογή χρησιμοποιεί την τεχνική κατακερματισμού για την αποθήκευση των αντικειμένων και χρησιμοποιεί τον πίνακα κατακερματισμού για την αποθήκευση στοιχείων.
Τ Ο γενικός ορισμός της συλλογής HashSet φαίνεται παρακάτω.
Set s1 = new HashSet();
Έχουμε δώσει την εφαρμογή HashSet στο ακόλουθο πρόγραμμα.
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, δημιουργούμε μια συλλογή θεμάτων HashSet και στη συνέχεια το διασχίζουμε χρησιμοποιώντας έναν επαναληπτικό για την εμφάνιση των στοιχείων στη συλλογή.
# 2) LinkedHashSet
Το LinkedHashSet εφαρμόζει ένα σύνολο διεπαφών και επεκτείνει το HashSet (ανατρέξτε στην ιεραρχία συλλογής). LinkedHashSet είναι η αναπαράσταση συνδεδεμένης λίστας του συνόλου διεπαφών. Το LinkedHashSet περιέχει μοναδικά στοιχεία, αλλά επιτρέπει μηδενικές τιμές.
Ο γενικός ορισμός του LinkedHashSet δίνεται παρακάτω.
Set s2 = new LinkedHashSet();
Η εφαρμογή για το LinkedHashSet δίνεται παρακάτω.
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Παραγωγή:
Για άλλη μια φορά χρησιμοποιούμε τίτλους βιβλίων για τη δημιουργία Linkedhashset. Όπως μπορείτε να δείτε από την έξοδο, η σειρά προσθήκης διατηρείται από το LinkedHashSet.
Διασύνδεση SortedSet
Η διεπαφή SortedSet επιτρέπει την πλήρη σειρά των στοιχείων. Περιέχει μεθόδους που παρέχουν μια φυσική σειρά στοιχείων. Τα στοιχεία της συλλογής που εφαρμόζουν τη διεπαφή SortedSet είναι διατεταγμένα σε αυξανόμενη σειρά.
Η κλάση TreeSet είναι ένα από τα παραδείγματα που εφαρμόζουν τη διεπαφή SortedSet.
Δένδρο
Ο γενικός ορισμός του Treeset έχει ως εξής:
Set s3 = new TreeSet();
Το TreeSet εφαρμόζει τη διεπαφή SortedSet και περιέχει μοναδικά στοιχεία. Η αποθήκευση και η ανάκτηση είναι αρκετά γρήγορη και στη συνέχεια τα στοιχεία διατάσσονται σε αύξουσα σειρά.
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, δημιουργήσαμε και προσθέσαμε περίεργους αριθμούς στη συλλογή χρησιμοποιώντας μεθόδους προσθήκης. Στη συνέχεια, χρησιμοποιώντας έναν επαναληπτικό, εξάγουμε τα στοιχεία στη συλλογή.
Πλεονεκτήματα του πλαισίου συλλογών Java
- Μειωμένος προγραμματισμός: Το πλαίσιο Συλλογές συνοδεύεται από όλες τις διεπαφές και τάξεις που περιέχουν τις μεθόδους που μπορούν να επιτρέψουν στους προγραμματιστές να γράψουν ένα αποτελεσματικό πρόγραμμα. Με αυτόν τον τρόπο, ο προγραμματιστής δεν χρειάζεται να επικεντρωθεί σε υπερβολικό προγραμματισμό.
- Συνεπείς μέθοδοι και API: Όλες οι τάξεις έχουν κοινές μεθόδους που δρουν στα δεδομένα. Αυτά τα API είναι συνεπή σε όλες τις τάξεις και ο προγραμματιστής δεν χρειάζεται να ανησυχεί για το ότι έχει πάρα πολλές διαφορετικές μεθόδους για κάθε τάξη.
- Αυξήστε την ταχύτητα και την ακρίβεια: Μπορείτε να γράψετε πολύ αποδοτικά προγράμματα χρησιμοποιώντας ένα πλαίσιο συλλογής και επίσης πιο γρήγορα και ακριβή προγράμματα, καθώς το πλαίσιο συλλογής παρέχει την πλήρη λειτουργικότητα για την υλοποίηση των δομών και των συλλογών δεδομένων.
- Διευκολύνει την επαναχρησιμοποίηση λογισμικού: Οι δομές δεδομένων και οι αλγόριθμοι του πλαισίου συλλογής Java μπορούν να επαναχρησιμοποιηθούν.
- Διαλειτουργικότητα μεταξύ μη σχετικών API: Τα API συλλογής επιτρέπουν τη διαλειτουργικότητα ακόμη και μεταξύ των μη σχετικών API.
- Λιγότερες προσπάθειες για το σχεδιασμό νέων API: Οι προγραμματιστές μπορούν να χρησιμοποιήσουν τα τυπικά API συλλογής και να σχεδιάσουν νέα API βάσει αυτού. Δεν χρειάζεται να δυσκολευτούν να γράψουν πλήρη νέα API.
Συχνές Ερωτήσεις
# 1) Ποια είναι η χρήση ενός πλαισίου συλλογής στην Java;
Απάντηση: Το πλαίσιο συλλογής προσφέρει προσυσκευασμένους αλγόριθμους, διεπαφές και τάξεις που επιτρέπουν στους προγραμματιστές να γράφουν πολύ αποδοτικά προγράμματα που μπορούν να αποθηκεύουν και να επεξεργάζονται δεδομένα.
# 2) Γιατί η Συλλογή είναι ένα πλαίσιο;
Απάντηση: Ένα πλαίσιο είναι μια επαναχρησιμοποιήσιμη συλλογή κλάσεων, διεπαφών και αλγορίθμων. Το πλαίσιο συλλογής είναι επίσης μια επαναχρησιμοποιήσιμη συλλογή κλάσεων δομής δεδομένων και αλγορίθμων που λειτουργούν σε αυτές τις κλάσεις.
# 3) Τι είναι το Java Συλλογές API στην Java;
Απάντηση: Το Java συλλογές API παρέχει διεπαφές και τάξεις που μπορούν να επεκταθούν και να εφαρμοστούν προκειμένου να χρησιμοποιηθούν δομές δεδομένων που δεν είναι παρά συλλογές.
# 4) Ποια είναι η διαφορά μεταξύ συλλογής και συλλογών στην Java;
Απάντηση: Η συλλογή είναι μια βασική διεπαφή στο πλαίσιο συλλογής, ενώ οι «συλλογές» είναι μια τάξη. Και οι δύο αποτελούν μέρος του πακέτου java.util.
**** Περισσότερες λεπτομέρειες και παραδείγματα του Java Συλλογές Πλαίσιο: ****
Σύγκριση μεταξύ λίστας, συνόλου και ουράς:
Λίστα | Σειρά | Ουρά |
---|---|---|
Η εντολή εισαγωγής διατηρείται | Η σειρά εισαγωγής δεν διατηρείται στο σύνολο Hash | Η εντολή εισαγωγής διατηρείται. |
Μπορεί να περιέχει διπλά στοιχεία | Δεν μπορεί να περιέχει διπλά στοιχεία | Μπορεί να περιέχει διπλά στοιχεία. |
Η εισαγωγή και η αφαίρεση του πίνακα μπορεί να γίνει για οποιοδήποτε ευρετήριο. | Αφαιρέστε το καθορισμένο στοιχείο. | Μόνο το τελευταίο στοιχείο που έχει εισαχθεί μπορεί να εμφανιστεί. Επίσης, η εισαγωγή στοιχείων γίνεται στο τέλος. |
Κατηγορία λίστας συστοιχιών
Στο Array, η κατανομή μνήμης είναι σταθερή. Αλλά στο ArrayList, η μνήμη μπορεί να εκχωρηθεί δυναμικά. Αυτή η κλάση ArrayList διατηρεί τη σειρά εισαγωγής και μπορείτε να εισαγάγετε διπλά στοιχεία.
Πρόγραμμα επίδειξης για Array List:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } }
Κατηγορία LinkedList
Η δομή δεδομένων συνδεδεμένης λίστας περιέχει κόμβους και αυτός ο κόμβος θα περιέχει δύο μέρη:
- Δεδομένα
- Αναφορά στο επόμενο στοιχείο
Ο πρώτος κόμβος δεν είναι ξεχωριστός κόμβος. Περιέχει μόνο την αναφορά και ονομάζεται κεφάλι. Ο τελευταίος κόμβος είναι μηδενικός.
Πρόγραμμα επίδειξης:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i 
Ουρά
Μια ουρά είναι πρώτη στη δομή δεδομένων πρώτης εξόδου (FIFO). Εάν καλέσετε τη μέθοδο κατάργησης, πάντα το πρώτο στοιχείο που θα εισαχθεί θα αφαιρεθεί από την ουρά. Έτσι, το Queue χρησιμοποιείται σε εφαρμογή σε πραγματικό χρόνο όπου τα δεδομένα πρέπει να ανακτηθούν με τη σειρά που έχει εισαχθεί.
Παράδειγμα προγράμματος:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } }

Σειρά
Μια συλλογή σετ δεν επιτρέπει διπλά στοιχεία. Μπορείτε να χρησιμοποιήσετε μια καθορισμένη δομή δεδομένων, όταν θέλετε να επεξεργαστείτε τη συλλογή δεδομένων χωρίς επανάληψη και όταν δεν χρειάζεται να διατηρήσετε τη σειρά εισαγωγής.
Πρόγραμμα επίδειξης:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } }

Διεπαφή ΧΑΡΤΗΣ
- Όταν θέλετε τη διαδικασία συλλογής στοιχείων με το ζεύγος κλειδιών και τιμών, τότε μπορείτε να χρησιμοποιήσετε τη δομή δεδομένων χάρτη, καθώς ο χάρτης είναι ένα αντικείμενο που μπορεί να αντιστοιχίσει κλειδιά σε τιμές.
- Ένας χάρτης δεν μπορεί να περιέχει διπλά κλειδιά.
- Οι σημαντικές υλοποιήσεις του χάρτη είναι HashMap, Treemap, LinkedHashMap, HashTable.
Διαφορά μεταξύ HashMap, Treemap, LinkedHashMap και HashTable:
HashMap Χάρτης δέντρου LinkedHashmap HashTable Επιτρέπονται μηδενικά κλειδιά και τιμές Επιτρέπονται μόνο μηδενικές τιμές. Επιτρέπονται μηδενικά κλειδιά και τιμές. Δεν θα επιτρέπει μηδενικά κλειδιά και τιμές. Δεν συγχρονίζεται Δεν συγχρονίζεται Δεν συγχρονίζεται συγχρονισμένος Δεν υπάρχει καμία εγγύηση για τη διατήρηση της τάξης στην επανάληψη Η ταξινόμηση γίνεται με βάση τη φυσική σειρά. Η εντολή εισαγωγής θα διατηρηθεί Η εντολή εισαγωγής δεν διατηρήθηκε.
Πρόγραμμα επίδειξης:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } }

Βασικά σημεία που πρέπει να σημειωθούν:
- List, Queue, set interfaces επεκτείνουν τη διεπαφή συλλογής και αυτή η διεπαφή συλλογής έχουν κοινές μεθόδους όπως προσθήκη, αφαίρεση κ.λπ.
- Η σειρά εισαγωγής διατηρείται στη λίστα και ένα σύνολο δεν μπορεί να περιέχει διπλά στοιχεία. Η ουρά είναι η δομή δεδομένων First in First out.
- Ο χάρτης θα περιέχει ζεύγη κλειδιών και τιμών. HashMap, Treemap, Hashtable, Linked HashMap είναι η σημαντική εφαρμογή της διεπαφής χάρτη.
συμπέρασμα
Αυτό το σεμινάριο μας έδωσε μια εισαγωγή στο Java Συλλογές Πλαίσιο. Έχουμε αγγίξει σύντομα όλες τις τάξεις και τις διεπαφές που αποτελούν μέρος του πλαισίου συλλογής Java.
Στα επόμενα σεμινάρια αυτής της σειράς, θα μάθουμε λεπτομερώς για κάθε ένα από αυτά τα μαθήματα και τις διεπαφές.
Μπορείτε να εξερευνήσετε περισσότερα για το Reflections in JAVA στο επερχόμενο σεμινάριό μας !!!
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- Εκμάθηση Java Reflection με παραδείγματα
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- Εκμάθηση Java SWING: Container, Components and Event Handling
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Πρόσβαση τροποποιητών σε Java - Εκμάθηση με παραδείγματα
- Java String με String Buffer και String Builder Tutorial
- Εισαγωγή στη γλώσσα προγραμματισμού Java - Video Tutorial
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration