Περιεχόμενο
- Οδηγίες
- Ταξινόμηση μιας συνδεδεμένης λίστας σε Java
- Ταξινόμηση χρησιμοποιώντας τους προεπιλεγμένους και προσαρμοσμένους συγκριτές
- Πώς
- Ανακοίνωση
Πώς να οργανώσετε μια συνδεδεμένη λίστα στη Java. Ένας κλειστός κατάλογος είναι ένας από τους κυριότερους τύπους δομών δεδομένων στον κόσμο του προγραμματισμού. Είναι μια οργάνωση κόμβων που περιέχει δεδομένα και αναφορές που δείχνουν στον επόμενο κόμβο. Για να ταξινομήσετε μια συνδεδεμένη λίστα στη Java, υπάρχει μια κλάση λίστας που λειτουργεί με το πλαίσιο συλλογών, το οποίο υλοποιεί αλγορίθμους ως παραγγελία.
Οδηγίες
Οργάνωση της συνδεδεμένης λίστας σε Java (εικόνα ανάκρισης από danimages από την Fotolia.com)-
Δηλώστε τη συνδεδεμένη λίστα δημιουργώντας ένα νέο αντικείμενο LinkedList και αντιστοιχίζοντας μια μεταβλητή LinkedList. Ένα LinkedList προέρχεται από τη γενική κλάση λίστας, οπότε οποιαδήποτε μέθοδος που δέχεται μια λίστα θα γίνει επίσης αποδεκτή από το αντικείμενο LinkedList. "" LinkedList l = νέο LinkedList (); ""
-
Προσθέστε αντικείμενα του ίδιου τύπου (όπως ακέραιοι) στη λίστα. Αυτά μπορεί να είναι αντικείμενα οποιουδήποτε είδους, αλλά για να ταξινομήσετε τη συνδεδεμένη λίστα, όλα πρέπει να είναι του ίδιου τύπου.
-
Χρησιμοποιήστε τη μέθοδο List.addFirst για να εισαγάγετε νέα αντικείμενα στην κορυφή της λίστας, έτσι ώστε τα αντικείμενα που προσθέτετε να είναι στην αντίθετη σειρά. Εάν θέλετε να τα προσθέσετε στο τέλος της λίστας, χρησιμοποιήστε τη μέθοδο List.addLast. "list.addFirst (1), list.addFirst (3), list.addFirst (2),"
-
Χρησιμοποιήστε ένα iterator για να επαναλάβετε τη λίστα και να το εκτυπώσετε πριν και μετά δείτε τι κάνει η μέθοδος ταξινόμησης. "" για το (iterator i = list.iterator (); i.hasNext ();) {System.out.println (i.next ())}} "
Ταξινόμηση μιας συνδεδεμένης λίστας σε Java
-
Ταξινόμηση της λίστας με τον προεπιλεγμένο συγκριτή. Ένας συγκριτής είναι ένα αντικείμενο που συγκρίνει δύο αντικείμενα. Το προεπιλεγμένο αντικείμενο σύγκρισης χρησιμοποιεί τον μικρότερο χειριστή, οπότε ο κατάλογος ταξινομείται με αύξουσα σειρά. Για να ταξινομήσετε τη λίστα, χρησιμοποιήστε τη στατική μέθοδο Collections.sort. "" Collections.sort (λίστα) ""
-
y) {return -1; "> Παραγγείλετε τη λίστα με μια προσαρμοσμένη σύγκριση γράφοντας μια κλάση που υλοποιεί μια διασύνδεση σύγκρισης και μεταβιβάζοντάς την σε μια παράσταση ως παραγγελία παραγγελίας Η κλάση που εφαρμόζει τον συγκριτή έχει μόνο να εφαρμόσει την απλή "public class GreaterThan εφαρμόζει τον Comparator else αν (x == y) {επιστροφή 0?} else {επιστροφή 1?}}}"
-
Χρησιμοποιήστε την κλήση στο Collections.sort μεταφέροντας μια νέα παρουσία του GreaterThan ως δεύτερο όρισμα. Δεδομένου ότι τα αντικείμενα που είναι μεγαλύτερα θα είναι μπροστά από τα άλλα, ο κατάλογος θα ταξινομηθεί κατά φθίνουσα σειρά αντί της αύξουσας τάξης. Εναλλακτικά, εάν ταξινομήσετε μια λίστα αντικειμένων από μια προσαρμοσμένη κλάση που έχετε δακτυλογραφήσει, αυτή η κλάση μπορεί να εφαρμόσει τη Συγκριτική διεπαφή αντί να χρησιμοποιήσει τη χωριστή κλάση Comparator. "" Collections.sort (λίστα, νέα GreaterThan ()); ""
Ταξινόμηση χρησιμοποιώντας τους προεπιλεγμένους και προσαρμοσμένους συγκριτές
Πώς
- Είναι προβληματικό να χρησιμοποιούμε έναν ακέραιο αριθμό για να επαναλάβουμε το κύκλωμα και τη μέθοδο List.size (). Η κατάργηση μιας κλειστής λίστας είναι μια δαπανηρή υπολογιστική λειτουργία. Όταν χρησιμοποιείτε έναν χειριστή ευρετηρίου (όπως το l [2]) όπως και σε οποιαδήποτε εντολή, η Java πρέπει να επαναλάβει τη λίστα μέχρι να φτάσει στο δείκτη 2. Για μικρές λίστες, αυτό είναι ένα πρόβλημα, ωστόσο, με κάτι μεγάλο, χρησιμοποιώντας τον χειριστή ευρετηρίου για να επαναλάβει τη μετατροπή σε κάτι που απαιτεί πολλούς πόρους.
- Ανεξάρτητα από το πώς εφαρμόζεται το αντικείμενο List, αφού το LinkedList υλοποιεί την ίδια διεπαφή.
- Η μέθοδος σύγκρισης θα πρέπει να επιστρέψει στο -1 εάν το arg0 είναι ταξινομημένο πριν arg1, 0 εάν είναι διατεταγμένο ισότιμα, και 1 αν το arg1 είναι ταξινομημένο πριν arg0.
Ανακοίνωση
- Το αντικείμενο iterator εξασφαλίζει ότι κάθε κόμβος της λίστας επισκέπτεται μόνο μία φορά. Αυτό είναι σημαντικό να θυμόμαστε, αφού η επίσκεψή μας χωρίς ανάγκη θα μπορούσε να καταχραστεί τις δομές δεδομένων σε σημείο που το πρόγραμμα παρουσιάζει δυσλειτουργίες.