| Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
java:jfc_intf_set [2020/03/12 17:45] gthanos |
java:jfc_intf_set [2020/03/16 17:42] gthanos |
| ====== Interface java.util.Set και java.util.SortedSet ====== | ====== Interface java.util.Set και java.util.SortedSet ====== |
| |
| Το [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|Set]] είναι ένα Collection το οποίο δεν επιτρέπει διπλές εγγραφές. Συνήθως υλοποιείται μέσω hash table ή ισοζυγισμένου δυαδικού δέντρου αναζητήσεως. Δείτε το παρακάτω παράδειγμα κώδικα που εξηγεί την λειτουργία του //Set//. | ===== java.util.Set ===== |
| | |
| | Το [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|java.util.Set]] είναι ένα Collection το οποίο δεν επιτρέπει διπλές εγγραφές. Συνήθως υλοποιείται μέσω hash table ή ισοζυγισμένου δυαδικού δέντρου αναζητήσεως. |
| | |
| | Εάν υλοποιηθεί μέσω HashTable η κλάση της οποίας τα αντικείμενα αποθηκεύονται πρέπει να υλοποιούν τις μεθόδους [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-|Object.equals]] και [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--|Object.hashCode]]. Εάν υλοποιηθεί μέσω Binary Tree τότε πρέπει να υλοποιείται το //interface// [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]]. |
| | |
| | Δείτε το παρακάτω παράδειγμα κώδικα που εξηγεί την λειτουργία του [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|java.util.Set]]. |
| |
| <code java FindDups2.java> | <code java FindDups2.java> |
| </code> | </code> |
| |
| Εκτός από το //interface// [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|java.util.Set]] είναι διαθέσιμο και το [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html|java.util.SortedSet]] το οποίο είναι απόγονος του [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|java.util.Set]] και αποθηκεύει τα στοιχεία ταξινομημένα σε αύξουσα σειρά. | ===== java.util.SortedSet ===== |
| | |
| | Τo interface [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html|java.util.SortedSet]] είναι απόγονος του interface [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|java.util.Set]] , το οποίο έχει την επιπλέον ιδιότητα να διατηρεί τα στοιχεία του σε ταξινομημένα αύξουσα σειρά με βάση την υλοποίηση του interface //Comparable// ή ενός //Comparator// για τον τύπο δεδομένων που αποθηκεύει. Οι επιπλέον μέθοδοι του συγκεκριμένου interface είναι οι εξής |
| | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#first()|first()]] - ** Επιστρέφει το 1ο στοιχείο από το //Set//. |
| | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#last()|last()]] - ** Επιστρέφει το τελευταίο στοιχείο από το //Set//. |
| | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#headSet(E)|headSet(E toElement)]] - ** Επιστρέφει το υποσύνολο του Set που τα στοιχεία του είναι μικρότερα από την τιμή //toElement//. |
| | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#tailSet(E)|tailSet(E fromElement)]] - ** Επιστρέφει το υποσύνολο του Set που τα στοιχεία του είναι μεγαλύτερα ή ίσα από την τιμή //fromElement//. |
| | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#subSet(E,%20E)|subSet(E fromElement, E toElement)]] - ** Επιστρέφει το υποσύνολο του Set από fromElement (μαζί με το fromElement) έως toElement (χωρίς το toElement). |
| | |
| | <code java StudentSortedSet.java> |
| | import java.util.*; |
| | |
| | public class StudentSortedSet { |
| | |
| | public static void main(String[] args) { |
| | |
| | SortedSet<Student> students = new TreeSet<Student>(); |
| | 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("Tom", "Rich")); |
| | for(Student n: students) |
| | System.out.println(n); |
| | |
| | System.out.println("\n***Print headset***"); |
| | |
| | SortedSet<Student> subStudents = students.headSet(new Student("Mary", "Poppins")); |
| | for(Student s: subStudents) |
| | System.out.println(s); |
| | |
| | System.out.println("\n***Print tailset***"); |
| | |
| | subStudents = students.tailSet(new Student("Mary", "Poppins")); |
| | for(Student s: subStudents) |
| | System.out.println(s); |
| | } |
| | } |
| | </code> |
| |
| ===== Υλοποιήσεις ===== | ===== Υλοποιήσεις ===== |