Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Java Collection Tutorials

Ένα κοινό λάθος που γίνεται από νέους προγραμματιστές είναι να αποθηκεύουν όλες τις συλλογές δεδομένων σε απλές συστοιχίες . Ενώ η βασική συστοιχία είναι μια μεγάλη δομή δεδομένων , έχει ορισμένες αδυναμίες που μπορούν να αποφευχθούν με τη χρήση ορισμένων από τις άλλες βασικές δομές δεδομένων . Η Java πλαίσιο Συλλογές παρέχει μια σειρά από εύκολα στη χρήση διεπαφές και τάξεις που εφαρμόζουν μερικές από τις πιο κοινές δομές δεδομένων στην επιστήμη των υπολογιστών . Βασικές Array
Η

Το καλύτερο πράγμα για μια βασική σειρά στη Java είναι ότι μπορεί να διαβαστούν από γραπτές και γρήγορα . Ωστόσο , μόνιμα προσθέτοντας ή αφαιρώντας ένα στοιχείο από τον πίνακα απαιτεί πολύ χρόνο , επειδή Java δεν υποστηρίζει δυναμική συστοιχίες . Κάθε φορά που αλλάζετε το μέγεθος ενός πίνακα σε Java , θα πρέπει να δημιουργήσει τη σειρά και πάλι από το μηδέν , ένα στοιχείο κάθε φορά , με ένα βρόχο . Μπορείτε να αποφύγετε αυτό με πάντα την προετοιμασία συστοιχίες σας στο μέγιστο μέγεθος που απαιτείται σε οποιαδήποτε στιγμή κατά τη διάρκεια της εκτέλεσης , αλλά αυτό μπορεί να είναι μια δραματική σπατάλη μνήμης και είναι απλώς κακή σχέδιο σε γενικές γραμμές .
Εικόνων ArrayList

Η κλάση ArrayList από τη βιβλιοθήκη java.util εξετάζει μερικά από αυτά τα προβλήματα με το τύλιγμα ενός συνόλου διευθυντή λειτουργιών γύρω από ένα κρυφό πίνακα. Αυτή η συστοιχία είναι στρατηγικά αυξάνεται και μειώνεται σε μέγεθος περιοδικά έτσι ώστε , κατά μέσο όρο, προσθήκη και την αφαίρεση στοιχείων συμβαίνει πολύ γρήγορα. Αλλά μερικές φορές , το κρυφό , εσωτερικό πίνακα πρέπει απλά να αλλάξει το μέγεθός τους , και σε αυτές τις περιπτώσεις , η επιχείρηση θα απαιτήσει ένα πολύ μεγαλύτερο χρονικό διάστημα .

Η LinkedList
Η

Η LinkedList προχωρά πέρα ​​από την ArrayList και στην πραγματικότητα δεν έχει καμία απολύτως διάταξη , κρυμμένο ή όχι . Αντ 'αυτού , τα αρχεία είναι αλυσιδωτά μαζί σε κόμβους , με κάθε κόμβο που περιέχει μια αναφορά στη διεύθυνση μνήμης της επόμενης . Το πλεονέκτημα ενός LinkedList είναι ότι προσθέτοντας ή αφαιρώντας τα νέα κομμάτια των δεδομένων γίνεται πάντα πολύ γρήγορα χρόνου και δεν υπάρχει ποτέ καμία αλλαγή μεγέθους ενός πίνακα που πρέπει να εκτελεστούν . Ωστόσο , είναι αδύνατον να τα δεδομένα πρόσβασης στη μέση του καταλόγου χωρίς να περάσει από όλη τη λίστα από το μπροστινό ή πίσω , έτσι ώστε ο χρόνος που χρειάζεται για να διαβάσει δεδομένα από τη μέση ενός LinkedList μπορεί να είναι σημαντική .

η ArrayList επιτρέπει στα δεδομένα οπουδήποτε μέσα σε αυτό για να έχετε πρόσβαση πολύ γρήγορα , και συνήθως μπορεί να αλλάξετε το μέγεθος γρήγορα , αλλά μερικές φορές χρειάζεται περισσότερο χρόνο όταν η εσωτερική σειρά του πρέπει να ξαναχτιστεί . Η LinkedList πάντα να προσθέσετε και να αφαιρέσετε τα δεδομένα από τον κατάλογο πολύ γρήγορα , αλλά την ανάκτηση δεδομένων από τη μέση της λίστας μπορεί να είναι χρονοβόρα . Αυτό κάνει η LinkedList μια καλή επιλογή για στοίβες και ουρές που θα είναι προσβάσιμες μόνο στο μπροστινό ή πίσω , αλλά το ArrayList μια καλύτερη επιλογή ως μια συνολική αντικατάσταση για τον απλό πίνακα.
Εικόνων HashSet

Η HashSet , όπως τόσο το ArrayList και LinkedList , επιτρέπει στα δεδομένα να προστεθούν ή να αφαιρεθούν πολύ , πολύ γρήγορα , και έχει επίσης ένα ακόμη πλεονέκτημα : ένα HashSet μπορούν να αναζητηθούν εξαιρετικά γρήγορα , πιο γρήγορα από ό, τι ένα συστοιχίες , ArrayLists , ή LinkedLists . Αυτό επιτυγχάνεται με την εκτέλεση μιας μαθηματική πράξη σε ένα κομμάτι των δεδομένων για τον προσδιορισμό του δείκτη της σε μια σειρά , και στη συνέχεια εκτελεί την ίδια λειτουργία με τα δεδομένα που πρέπει να ψάξει για να πάρει το δείκτη των δεδομένων που επιθυμούμε .

Αν ότι είναι σύγχυση , μην ανησυχείτε . Το σημαντικό πράγμα είναι ότι HashSets είναι μεγάλη για τα σύνολα των δεδομένων που θα πρέπει να αναζητηθεί μέσω ξανά και ξανά . Αλλά έχουν επίσης μια σημαντική αδυναμία : α Hashset δεν διατηρεί τη σειρά των δεδομένων που τοποθετείται σε αυτό , και η διάταξη των στοιχείων στο σύνολο μπορούν να αλλάξουν από τη μια στιγμή στην άλλη . Για παράδειγμα , σε ένα βασικό πίνακα, εάν ένα στοιχείο τοποθετείται στο δείκτη 0 , ο προγραμματιστής μπορεί να υπολογίζει για το υπόλοιπο στον δείκτη 0 για πάντα μέχρι να αλλάζει . Αλλά σε μια HashSet , ένα στοιχείο στο δείκτη 0 σε μια στιγμή μπορεί να είναι στο δείκτη 327 στην επόμενη στιγμή .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα