| Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
java:jfc_intf_set [2020/03/12 17:16] gthanos [Interface java.util.Set και java.util.SortedSet] |
java:jfc_intf_set [2021/05/22 03:01] |
| ====== Interface java.util.Set και java.util.SortedSet ====== | |
| |
| Το [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|Set]] είναι ένα Collection το οποίο δεν επιτρέπει διπλές εγγραφές. Συνήθως υλοποιείται μέσω hash table ή ισοζυγισμένου δυαδικού δέντρου αναζητήσεως. Δείτε το παρακάτω παράδειγμα κώδικα που εξηγεί την λειτουργία του //Set//. | |
| |
| <code java FindDups2.java> | |
| import java.util.*; | |
| |
| public class FindDups { | |
| | |
| public static void main(String args[]) { | |
| Collection<Student> students = new ArrayList<>(); | |
| students.add(new Student("John", "Smith")); | |
| students.add(new Student("Stanley", "Peters")); | |
| students.add(new Student("Edgar", "Bloch")); | |
| students.add(new Student("Suzan", "Miles")); | |
| students.add(new Student("Mary", "Poppins")); | |
| students.add(new Student("John", "Smith")); | |
| students.add(new Student("Stanley", "Peters")); | |
| | |
| Collection <Student> uniques = new HashSet<Student>(); | |
| Collection <Student> dups = new HashSet<Student>(); | |
| | |
| for(Student st : students) { | |
| if(uniques.contains(st)) | |
| dups.add(st); | |
| else | |
| uniques.add(st); | |
| } | |
| | |
| uniques.removeAll(dups); | |
| System.out.println("-- Uniques --"); | |
| print(uniques); | |
| System.out.println("-- Dups --"); | |
| print(dups); | |
| } | |
| | |
| public static void print(Collection<Student> collection) { | |
| Iterator<Student> it = collection.iterator(); | |
| while(it.hasNext()) | |
| System.out.println(it.next()); | |
| } | |
| } | |
| </code> | |
| ===== Υλοποιήσεις ===== | |
| |
| Βασικές υλοποιήσεις του [[https://docs.oracle.com/javase/7/docs/api/java/util/Set.html|Set]] interface είναι οι παρακάτω: | |
| * **[[https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html|HashSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Hash_table|HashTable]]. Γρήγορο στην αναζήτηση. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set. | |
| * **[[https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html|TreeSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Red-black_tree|Red-Black tree]]. Ικανοποιητικά γρήγορο. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Η σειρά διάτρεξης είναι η σειρά κατάταξης των στοιχείων, διότι υλοποιεί τον interface [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html|SortedSet]]. | |
| * **[[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html|LinkedHashSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Hash_table|HashTable]] με παράλληλη χρήση διπλά συνδεδεμένης λίστας. Γρήγορο στην αναζήτηση. Εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα, λόγω της ύπαρξης της λίστας. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set. | |
| |
| |Προηγούμενο: [[:java:jfc_intf_collection | Interface java.util.Collections ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:jfc_intf_list| Interface java.util.List ]] | | |