treeset java tutorial with programming examples
Αυτό το σεμινάριο εξηγεί τα πάντα για την κλάση TreeSet, την υλοποίηση, την επανάληψη, το TreeSet Vs HashSet, τα παραδείγματα Java TreeSet κ.λπ.
Το TreeSet in Java εφαρμόζει τη διεπαφή Set (πιο συγκεκριμένα το SortedSet). Το TreeSet χρησιμοποιεί ένα TreeMap εσωτερικά για την αποθήκευση δεδομένων. Από προεπιλογή, τα αντικείμενα ή τα στοιχεία του TreeSet αποθηκεύονται σύμφωνα με τη φυσική σειρά με αύξουσα σειρά.
Η κλάση TreeSet που εφαρμόζει το TreeSet στην Java εφαρμόζει τη διεπαφή «NavigableSet» και κληρονομεί επίσης την κλάση AbstractSet.
=> Δείτε εδώ για να δείτε εδώ το A-Z Of Java Training Tutorials.
Τι θα μάθετε:
TreeSet στην Ιάβα
Σημειώστε ότι τα στοιχεία του TreeSet μπορούν επίσης να ταξινομηθούν ρητά παρέχοντας τον προσαρμοσμένο Συγκριτή κατά τη δημιουργία ενός αντικειμένου TreeSet χρησιμοποιώντας το συγκεκριμένο πρωτότυπο κατασκευαστή.
Παρακάτω δίνονται μερικά από τα σημαντικά χαρακτηριστικά του TreeSet:
- Η κλάση TreeSet εφαρμόζει τη διεπαφή SortedSet. Δεν επιτρέπει διπλά στοιχεία.
- Η κλάση TreeSet δεν είναι συγχρονισμένη.
- Το TreeSet δεν διατηρεί τη σειρά εισαγωγής, αλλά τα στοιχεία στο TreeSet ταξινομούνται σύμφωνα με τη φυσική σειρά.
- Το TreeSet μπορεί να παραγγελθεί χρησιμοποιώντας έναν προσαρμοσμένο συγκριτή κατά τη δημιουργία ενός αντικειμένου TreeSet.
- Το TreeSet χρησιμοποιείται συνήθως για την αποθήκευση τεράστιων ποσοτήτων πληροφοριών που είναι φυσικά ταξινομημένες. Αυτό βοηθά στην εύκολη και ταχύτερη πρόσβαση.
Δήλωση κλάσης TreeSet
Η Java παρέχει μια κλάση που ονομάζεται 'TreeSet' που περιέχει τη λειτουργικότητα της δομής δεδομένων TreeSet. Η κλάση TreeSet είναι μέρος του πακέτου java.util.
Για να συμπεριλάβουμε την κλάση TreeSet στο πρόγραμμα Java, πρέπει να χρησιμοποιήσουμε τη δήλωση εισαγωγής όπως δίνεται παρακάτω:
import java.util.TreeSet;
ή
import java.util.*;
Μια γενική δήλωση της κλάσης TreeSet είναι:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Όπως φαίνεται από τη δήλωση κλάσης, η κλάση TreeSet επεκτείνει το AbstractSet και εφαρμόζει διεπαφές NavigableSet, Cloneable και Serializable.
Μια ιεραρχία τάξης για την κλάση TreeSet δίνεται παρακάτω:
Εσωτερική εφαρμογή
Γνωρίζουμε ότι το TreeSet εφαρμόζει τη διεπαφή NavigableSet και επεκτείνει την κλάση SortedSet.
Εσωτερικά, ο κατασκευαστής TreeSet ορίζεται ως εξής:
public TreeSet() { this(new TreeMap()); }
Όπως φαίνεται στον παραπάνω ορισμό κατασκευαστή του TreeSet, καλείται ένα αντικείμενο TreeMap. Έτσι εσωτερικά, είναι ένα αντικείμενο TreeMap που εφαρμόζεται για ένα TreeSet. Ως εκ τούτου, ενώ προσθέτετε ένα στοιχείο στο TreeSet, προστίθεται ένα κλειδί στο TreeMap στο οποίο τα κλειδιά ταξινομούνται από προεπιλογή.
Σύμφωνα με Τεκμηρίωση της Oracle στο TreeSet ,
'Το TreeSet είναι μια εφαρμογή NavigableSet που βασίζεται σε TreeMap.'
Παράδειγμα Java TreeSet
Το ακόλουθο πρόγραμμα Java δείχνει ένα απλό παράδειγμα που δείχνει το TreeSet. Σε αυτό το πρόγραμμα, έχουμε ορίσει ένα απλό Color TreeSet. Προσθέτουμε στοιχεία σε αυτό και στη συνέχεια τα εμφανίζουμε. Σημειώστε ότι τα στοιχεία εμφανίζονται σύμφωνα με τη φυσική σειρά.
import java.util.*; class Main{ public static void main(String args()){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Παραγωγή:
Περιεχόμενα TreeSet:
Μπλε πράσινο κόκκινο κίτρινο
Επανάληψη μέσω TreeSet
Για να αποκτήσετε πρόσβαση στα μεμονωμένα στοιχεία του TreeSet, πρέπει να επαναλάβουμε μέσω του TreeSet ή με άλλα λόγια, διασχίζοντας το TreeSet.
Το κάνουμε αυτό δηλώνοντας Iterator για το TreeSet και στη συνέχεια χρησιμοποιήστε αυτό το Iterator για πρόσβαση σε κάθε στοιχείο. Για αυτό, χρησιμοποιούμε την επόμενη () μέθοδο ενός επαναληπτικού που επιστρέφει το επόμενο στοιχείο στο TreeSet.
Το ακόλουθο πρόγραμμα Java δείχνει τη χρήση του Iterator για επανάληψη μέσω του TreeSet.
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String() args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }
Παραγωγή:
TreeSet: (5, 10, 15, 20, 25)
TreeSet χρησιμοποιώντας Iterator: 5, 10, 15, 20, 25,
πώς ανοίγετε αρχεία βάζων
TreeSet Συγκριτής στην Ιάβα
Από προεπιλογή, το TreeSet παραγγέλνεται φυσικά. Μπορούμε επίσης να ταξινομήσουμε το TreeSet με προσαρμοσμένη σειρά, ορίζοντας μια νέα κατηγορία συγκριτών. Σε αυτήν την κατηγορία σύγκρισης, πρέπει να παρακάμψουμε τη μέθοδο «σύγκρισης» για να ταξινομήσουμε τα στοιχεία του TreeSet. Αυτό το αντικείμενο σύγκρισης μεταφέρεται στη συνέχεια στον κατασκευαστή TreeSet.
Το ακόλουθο πρόγραμμα Java δείχνει τη χρήση ενός Συγκριτή για την ταξινόμηση του TreeSet.
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String() args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } }
Παραγωγή:
TreeSet: (Pune, Indore, Hyderabad, Bangaluru)
Το παραπάνω πρόγραμμα εφαρμόζει μια κλάση Συγκριτών για να ταξινομήσει το δεδομένο TreeSet αλφαβητικά με αντίστροφη σειρά.
Συνιστώμενη ανάγνωση = >> Διασύνδεση Java Comparator
TreeSet API / Μέθοδοι & Κατασκευαστές
Σε αυτήν την ενότητα, θα συζητήσουμε το API της κλάσης TreeSet. Εδώ θα συζητήσουμε τους κατασκευαστές και τις μεθόδους που παρέχονται από την κλάση TreeSet.
Η κλάση TreeSet παρέχει υπερφορτωμένους κατασκευαστές για την κατασκευή ενός αντικειμένου TreeSet.
Έχουμε διαβάσει αυτούς τους κατασκευαστές ως εξής:
Κατασκευαστές
Πρωτότυπο κατασκευαστή | Περιγραφή | |
---|---|---|
περιέχει | Το boolean περιέχει (αντικείμενο o) | Ελέγχει εάν το TreeSet περιέχει δεδομένο στοιχείο. αληθινό εάν υπάρχει. |
TreeSet () | Προεπιλεγμένος κατασκευαστής για να δημιουργήσετε ένα νέο, κενό αντικείμενο TreeSet. | |
TreeSet (Συλλογή γ) | Δημιουργεί ένα νέο αντικείμενο TreeSet που περιέχει τα στοιχεία από τη δεδομένη συλλογή c, ταξινομημένο σύμφωνα με τη φυσική σειρά. | |
TreeSet (Συγκριτικός συγκριτής) | Κατασκευάζει ένα νέο αντικείμενο TreeSet το οποίο είναι κενό και θα ταξινομηθεί σύμφωνα με τον καθορισμένο συγκριτή. | |
TreeSet (Ταξινομημένα σετ) | Δημιουργεί ένα νέο αντικείμενο TreeSet που περιέχει στοιχεία από συγκεκριμένα sortedSet s. |
Μέθοδοι
Έπειτα, ας δούμε τα διάφορα μέσα που παρέχονται από την κλάση TreeSet.
Μέθοδος | Πρωτότυπο μεθόδου | Περιγραφή |
---|---|---|
Προσθήκη | boolean add (E ε) | Προσθέτει δεδομένο στοιχείο στο TreeSet εάν δεν είναι ήδη εκεί. |
addAll | boolean addAll (Συλλογή γ) | Προσθέτει όλα τα στοιχεία στη δεδομένη συλλογή c στο σύνολο. |
οροφή | E ανώτατο όριο (E e) | Επιστρέφει το στοιχείο μεγαλύτερο ή ίσο με το e (λιγότερο στοιχείο). ή μηδενικό εάν δεν υπάρχει στοιχείο. |
Σαφή | κενό καθαρό () | Διαγράφει όλα τα στοιχεία από το TreeSet. |
κλώνος | Αντικείμενο κλώνου () | Επιστρέφει ένα ρηχό αντίγραφο του αντικειμένου TreeSet. |
συγκριτής | Συγκριτικός συγκριτής () | Επιστρέφει το συγκριτικό για το TreeSet ή null εάν χρησιμοποιείται φυσική παραγγελία. |
φθίνουσαIterator | Iterator φθίνουσαIterator () | Επιστρέφει φθίνουσα επανάληψη πάνω από τα στοιχεία του TreeSet. |
φθίνουσαSet | NavigableSet descendingSet () | Επιστρέφει μια προβολή στοιχείων στο TreeSet με αντίστροφη σειρά. |
πρώτα | Πρώτα () | Επιστρέφει το πρώτο ή το χαμηλότερο στοιχείο στο TreeSet. |
πάτωμα | Ε όροφος (Ε ε) | Επιστρέφει το στοιχείο που είναι μικρότερο ή ίσο με το δεδομένο στοιχείο e στο TreeSet. Επιστρέφει null εάν δεν υπάρχει τέτοιο στοιχείο. |
σετ κεφαλής | SortedSet headSet (E toElement) | επιστρέφει ένα σύνολο στοιχείων που είναι αυστηρά μικρότερα από το δεδομένο στοElement |
NavigableSet headSet (E toElement, boolean inclusive) | Επιστρέφει ένα σύνολο στοιχείων που είναι ίσο με (εάν συμπεριλαμβάνεται = true) ή μικρότερο από αυτό που δίνεται στο στοιχείο. | |
πιο ψηλά | E υψηλότερα (E e) | Επιστρέφει το ελάχιστο στοιχείο σε αυτό το σετ αυστηρά μεγαλύτερο από το δεδομένο στοιχείο ή μηδενικό εάν δεν υπάρχει τέτοιο στοιχείο. |
είναι άδειο | boolean isEmpty () | Ελέγχει εάν το TreeSet είναι κενό. Επιστρέφει true εάν είναι κενό. |
επαναληπτικό | Επαναληπτικό επανάληψης () | Επιστρέφει έναν επαναληπτικό (σε αύξουσα σειρά) για το TreeSet. |
τελευταίος | Ε τελευταία () | Επιστρέφει το υψηλότερο ή το τελευταίο στοιχείο στο TreeSet. |
πιο χαμηλα | E χαμηλότερο (E e) | Επιστρέφει το στοιχείο (μεγαλύτερο στοιχείο) που είναι αυστηρά μικρότερο από το δεδομένο στοιχείο e στο TreeSet. |
pollFirst | Πρώτη δημοσκόπηση () | Αφαιρεί και επιστρέφει το πρώτο (χαμηλότερο) στοιχείο στο σύνολο. null αν το σετ είναι κενό. |
pollLast | E pollLast () | Αφαιρεί και επιστρέφει το τελευταίο (μεγαλύτερο) στοιχείο στο σύνολο. μηδέν εάν οριστεί κενό. |
αφαιρώ | boolean remove (Αντικείμενο o) | Αφαιρεί το δεδομένο στοιχείο από το σετ. |
Μέγεθος | int μέγεθος () | Επιστρέφει το μέγεθος ή τον αριθμό των στοιχείων που υπάρχουν στο TreeSet. |
υποσύνολο | Υποσύνολο NavigableSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | Επιστρέφει μια προβολή στοιχείων που κυμαίνονται απόElement έωςElement. |
Υποσύνολο SortedSet (E fromElement, E toElement) | Επιστρέφει στοιχεία προβολής που κυμαίνονται απόElement (inclusive), έωςEElement (αποκλειστικό). | |
ουρά | ΤαξινόμησηSet tailSet (E fromElement) | Επιστρέφει μια προβολή που περιέχει στοιχεία που είναι μεγαλύτερα ή ίσα με το δεδομένο fromElement. |
NavigableSet tailSet (E fromElement, boolean inclusive) | Επιστρέφει μια προβολή των στοιχείων που είναι ίση με (εάν ισχύει το inclusive) ή μεγαλύτερη από το στοιχείοElement. |
TreeSet In Java 8
Λάβετε υπόψη ότι για το TreeSet, δεν υπάρχουν σημαντικές αλλαγές στην έκδοση Java 8. Όλες οι μέθοδοι και οι κατασκευαστές λειτουργούν στο Java 8 και στις νεότερες εκδόσεις.
Υλοποίηση TreeSet σε Java
Το ακόλουθο πρόγραμμα Java εφαρμόζει τις περισσότερες από τις μεθόδους TreeSet που συζητήθηκαν παραπάνω.
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String() args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }
Παραγωγή:
Περιεχόμενο σετ δέντρου: 10 15 25 30 35
ανώτατο όριο (25): 25
όροφος (25): 25
Το TreeSet περιέχει (15): true
Μέγεθος σετ δέντρου: 5
TreeSet Πρώτο στοιχείο: 10
TreeSet Τελευταίο στοιχείο: 35
Το στοιχείο 30 καταργήθηκε από το TreeSet
TreeSet μετά την αφαίρεση (): 10 15 25 35
Μέγεθος TreeSet μετά την αφαίρεση (): 4
Ακουστικό: (10, 15, 25)
Μέγεθος σετ δέντρου μετά από διαγραφή (): 0
Στο παραπάνω πρόγραμμα, ορίζουμε ένα αντικείμενο TreeSet και στη συνέχεια προσθέτουμε στοιχεία σε αυτό χρησιμοποιώντας τη μέθοδο 'προσθήκη'. Στη συνέχεια, ορίζουμε ένα ArrayList. Στη συνέχεια προσθέτουμε στοιχεία του ArrayList στο TreeSet χρησιμοποιώντας τη μέθοδο «addAll». Αργότερα, παρουσιάζουμε διάφορες μεθόδους TreeSet όπως Iterator, οροφή, δάπεδο, πρώτο, τελευταίο, περιέχει, μέγεθος, isEmpty κ.λπ.
TreeSet Vs HashSet
Ας δούμε μερικές από τις διαφορές μεταξύ του TreeSet και του HashSet.
TreeSet | HashSet |
---|---|
Τα στοιχεία ταξινομούνται σύμφωνα με τη φυσική σειρά. | Τα στοιχεία δεν ταξινομούνται. |
Παίρνει O (log N) χρόνο για λειτουργίες όπως εισαγωγή, διαγραφή και αναζήτηση καθιστώντας το πιο αργό από το TreeSet. | Παίρνει σταθερό χρόνο για βασικές λειτουργίες όπως εισαγωγή, διαγραφή και αναζήτηση καθιστώντας ταχύτερη από το TreeSet. |
Δεν επιτρέπει μηδενικά αντικείμενα. | Επιτρέπει μηδενικό αντικείμενο. |
Χρησιμοποιεί τη μέθοδο σύγκρισης () για σύγκριση δύο αντικειμένων. | Χρησιμοποιεί τη μέθοδο σύγκρισης () και ισούται με () για τη σύγκριση δύο αντικειμένων. |
Εφαρμόζεται εσωτερικά χρησιμοποιώντας το Navigable TreeMap. | Εφαρμόζεται εσωτερικά χρησιμοποιώντας το HashMap. |
Έχει πλούσια λειτουργικότητα API που μπορεί να εκτελέσει διάφορους χειρισμούς. | Το API λειτουργικότητας του HashSet είναι μάλλον περιορισμένο. |
Συχνές Ερωτήσεις
Q # 1) Τι είναι το TreeSet;
Απάντηση: Το TreeSet είναι μια εφαρμογή του SortedSet που δεν επιτρέπει διπλές τιμές. Τα στοιχεία στο TreeSet ταξινομούνται από προεπιλογή σε αύξουσα σειρά.
Q # 2) Πώς προσθέτετε στοιχεία στο TreeSet στην Java;
Απάντηση: Η κλάση TreeSet παρέχει μια μέθοδο προσθήκης που χρησιμοποιείται για την προσθήκη ενός συγκεκριμένου στοιχείου στο TreeSet. Παρέχει επίσης τη μέθοδο «addAll». Αυτή η μέθοδος δέχεται οποιαδήποτε άλλη συλλογή ως επιχείρημα και στη συνέχεια προσθέτει όλα τα στοιχεία αυτής της συλλογής στο TreeSet.
Q # 3) Είναι ασφαλές το TreeSet νήμα;
Απάντηση: Όχι. Το TreeSet δεν είναι ασφαλές για νήματα. Επομένως, πρέπει να προσέξουμε τον τρόπο λειτουργίας του TreeSet σε ένα περιβάλλον πολλαπλών νημάτων.
Q # 4) Μπορεί το TreeSet να έχει διπλότυπα;
Απάντηση: Όχι. Το TreeSet δεν επιτρέπει διπλότυπα.
Q # 5)Επιτρέπει το TreeSet null στην Java;
Απάντηση: Ναί. Μπορούμε να έχουμε μηδενικά στοιχεία στο TreeSet.
συμπέρασμα
Αυτό ολοκληρώνει το σεμινάριό μας για το TreeSet. Το TreeSet είναι μια εφαρμογή SortedSet που δεν επιτρέπει διπλότυπα αλλά επιτρέπει μηδενικές τιμές. Τα στοιχεία στο TreeSet ταξινομούνται από προεπιλογή σύμφωνα με τη φυσική σειρά σε αύξουσα σειρά.
Έχουμε δει τα βασικά της κλάσης TreeSet μαζί με τη δήλωσή του και διάφορους κατασκευαστές & μεθόδους.
Στα επόμενα σεμινάρια μας, συζητάμε τις υπόλοιπες τάξεις συλλογής Java.
=> Παρακολουθήστε εδώ την απλή εκπαίδευση Java.
Συνιστώμενη ανάγνωση
- Δυαδικό δέντρο αναζήτησης στην Java - Παραδείγματα υλοποίησης και κώδικα
- TreeMap In Java - Tutorial With Java TreeMap Παραδείγματα
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- Εκπαιδευτικό μάθημα Java Scanner με παραδείγματα
- Εκπαιδευτικό μάθημα Java Array - java.util.Arrays Class με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Το Java String περιέχει () Μέθοδος Εκμάθησης με Παραδείγματα
- Jagged Array In Java - Εκμάθηση με παραδείγματα