Πώς να χρησιμοποιήσετε τη δομή δεδομένων Java TreeMap

Πώς να χρησιμοποιήσετε τη δομή δεδομένων Java TreeMap

Η κλάση Java TreeMap αποθηκεύει δεδομένα σε μια δομή δέντρου χρησιμοποιώντας μια διεπαφή χάρτη. Αυτή η κλάση επεκτείνει την κλάση AbstractMap και, όπως και η μητρική της κλάση, το TreeMap έχει δύο παραμέτρους τύπου. Μία από τις παραμέτρους τύπου αντιπροσωπεύει τα κλειδιά στο TreeMap, ενώ η άλλη αντιπροσωπεύει τις τιμές.





Η δομή δεδομένων TreeMap αποθηκεύει ζεύγη κλειδιών-τιμών και σας επιτρέπει να εκτελείτε λειτουργίες CRUD σε αυτά τα δεδομένα.





Πώς να δημιουργήσετε ένα TreeMap σε Java

Η κλάση TreeMap έχει τέσσερις κατασκευαστές που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε ένα νέο αντικείμενο TreeMap. Ο προεπιλεγμένος κατασκευαστής είναι ο πιο δημοφιλής από τους τέσσερις. Αυτός ο κατασκευαστής δεν δέχεται ορίσματα και δημιουργεί έναν κενό δενδρικό χάρτη.





// Create a new tree map 
TreeMap<Integer,String> customers = new TreeMap<Integer,String>();

Ο παραπάνω κώδικας δημιουργεί έναν κενό δέντρο χάρτη που ονομάζεται οι πελάτες .

Συμπλήρωση της δομής δεδομένων TreeMap

ο βάζω() μέθοδος προσθέτει ένα στοιχείο σε ένα αντικείμενο TreeMap. Χρειάζονται δύο ορίσματα—ένα κλειδί και η τιμή του. Μπορείτε να προσθέσετε στοιχεία στον δέντρο χάρτη με οποιαδήποτε τυχαία σειρά και η δομή δεδομένων θα τα αποθηκεύσει με αύξουσα σειρά, σύμφωνα με τα κλειδιά τους.



// Populate a tree map 
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");

Ο παραπάνω κώδικας προσθέτει πέντε πελάτες, με τυχαία σειρά, στον δενδρικό χάρτη πελατών.

γιατί δεν λειτουργούν τα ηχεία μου

Προβολή αντικειμένων σε TreeMap

Η κλάση TreeMap αποθηκεύει τα δεδομένα της σε ένα αντικείμενο. Έτσι, για να δείτε όλα τα στοιχεία σε έναν χάρτη δέντρου, μπορείτε απλώς να εκτυπώσετε το αντικείμενο του δέντρου χάρτη στην κονσόλα:





// View all tree map items as an object 
System.out.println(customers);

Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:

το iphone δεν δημιουργεί αντίγραφα ασφαλείας στο icloud
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Σημειώστε ότι το παραπάνω αντικείμενο εμφανίζει τα στοιχεία σε αύξουσα σειρά. Μπορείτε επίσης να δείτε κάθε στοιχείο και το αντίστοιχο κλειδί του χρησιμοποιώντας ένας βρόχος Java for .





// View all items with an iterator 
for (Entry<Integer, String> customer : customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:

Key: 101 Value: Kim Brown 
Key: 102 Value: Mark Williams
Key: 103 Value: Jim Riley
Key: 104 Value: Phil Blair
Key: 105 Value: Jessica Jones

Ενημέρωση αντικειμένων σε ένα TreeMap

Η κλάση TreeMap σάς επιτρέπει να ενημερώσετε ένα υπάρχον στοιχείο χρησιμοποιώντας το αντικαθιστώ() μέθοδος. Υπάρχουν δύο μέθοδοι αντικατάστασης. Η πρώτη μέθοδος παίρνει ένα υπάρχον κλειδί και τη νέα τιμή στην οποία θέλετε να αντιστοιχίσετε το υπάρχον κλειδί.

// Replace existing value 
customers.replace(101,"Kim Smith");
System.out.println(customers);

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Οπως βλέπεις Κιμ Μπράουν είναι τώρα Κιμ Σμιθ . Η δεύτερη μέθοδος replace() παίρνει ένα υπάρχον κλειδί, την τρέχουσα τιμή του κλειδιού και τη νέα τιμή που θέλετε να αντιστοιχίσετε στο κλειδί.

// Replace existing value 
customers.replace(103,"Jim Riley", "Michelle Noah");
System.out.println(customers);

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

Στο παραπάνω αντικείμενο Μισέλ Νόα αντικαθιστά Τζιμ Ράιλι .

Διαγραφή αντικειμένων από το TreeMap

Εάν θέλετε να αφαιρέσετε ένα μεμονωμένο στοιχείο από τον δέντρο χάρτη, το αφαιρώ() μέθοδος είναι η μόνη σας επιλογή. Παίρνει το κλειδί που σχετίζεται με το στοιχείο που θέλετε να καταργήσετε και επιστρέφει τη διαγραμμένη τιμή.

// Remove an item 
customers.remove(104);
System.out.println(customers);

Η εκτέλεση του παραπάνω κώδικα εκτυπώνει το ακόλουθο αντικείμενο στην κονσόλα:

αξίζει το xbox game pass ultimate
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

Αυτό Τάξη Java έχει επίσης ένα Σαφή() μέθοδος που σας επιτρέπει να διαγράψετε όλα τα στοιχεία στον δενδρικό χάρτη.

Το TreeMap εναντίον της κλάσης Java HashMap

Το TreeMap και το HashMap είναι δύο από τις πιο δημοφιλείς κατηγορίες χαρτών Java. Και οι δύο επεκτείνουν την κλάση AbstractMap. Αυτή η σχέση δίνει στις κλάσεις TreeMap και HashMap πρόσβαση σε πολλές από τις ίδιες λειτουργίες.

Ωστόσο, υπάρχουν μερικές αξιοσημείωτες διαφορές μεταξύ αυτών των δύο κατηγοριών χαρτών. Το TreeMap χρησιμοποιεί μια εφαρμογή Red-Black δέντρο της διεπαφής χάρτη, ενώ το HashMap χρησιμοποιεί έναν πίνακα κατακερματισμού. Το HashMap σάς επιτρέπει να αποθηκεύσετε ένα μόνο μηδενικό κλειδί, ενώ το TreeMap όχι. Τέλος, ένα HashMap είναι πιο γρήγορο από ένα TreeMap. Η αλγοριθμική ταχύτητα του πρώτου είναι O(1) ενώ του δεύτερου είναι O(log(n)).