java:jfc_intf_sorted_set_map
This is an old revision of the document!
Table of Contents
Τα interfaces SortedSet και SortedMap
java.util.SortedSet
Τo interface SortedSet είναι ένα Set που διατηρεί τα στοιχεία του σε αύξουσα σειρά με βάση την υλοποίηση του interface Comparable ή ενός Comparator για τον συγκεκριμένο τύπο δεδομένων. Οι επιπλέον μέθοδοι του συγκεκριμένου interface είναι οι εξής
- first() - Επιστρέφει το 1ο στοιχείο από το Set.
- last() - Επιστρέφει το τελευταίο στοιχείο από το Set.
- headSet(E toElement) - Επιστρέφει το υποσύνολο του Set που τα στοιχεία του είναι μικρότερα από την τιμή toElement.
- tailSet(E fromElement) - Επιστρέφει το υποσύνολο του Set που τα στοιχεία του είναι μεγαλύτερα ή ίσα από την τιμή fromElement.
- subSet(E fromElement, E toElement) - Επιστρέφει το υποσύνολο του Set από fromElement (μαζί με το fromElement) έως toElement (χωρίς το toElement).
- NameSortedSet.java
iimport java.util.*; public class NameSortedSet { static final Comparator<Name> NameOrdering = new Comparator<Name>() { public int compare(Name n1, Name n2) { int cmp = n1.firstName().compareTo(n2.firstName() ); return (cmp != 0 ? cmp : n1.lastName().compareTo(n2.lastName() )); } }; public static void main(String[] args) { SortedSet<Name> names = new TreeSet<Name>(NameOrdering); names.add(new Name("Bob", "Travolta")); names.add(new Name("John", "Smith")); names.add(new Name("Karl", "Ng")); names.add(new Name("Jeff", "Smith")); names.add(new Name("Tom", "Rich")); for(Name n: names) System.out.println(n); System.out.println("\n***Print headset***"); SortedSet<Name> subnames = names.headSet(new Name("Karl", "Ng")); for(Name n: subnames) System.out.println(n); System.out.println("\n***Print tailset***"); subnames = names.tailSet(new Name("Karl", "Ng")); for(Name n: subnames) System.out.println(n); } }
Στο παραπάνω παράδειγμα δείτε πως αλλάζει η κατάταξη αν αφαιρέσετε τον Comparator από τον κατασκευαστή του αντικειμένου names.
java.util.SortedMap
Τo interface SortedMap είναι ένα Map που διατηρεί τα κλειδιά του σε αύξουσα σειρά με βάση την υλοποίηση του interface Comparable ή της κλάσης Comparator τα κλειδιά. Οι επιπλέον μέθοδοι του συγκεκριμένου interface είναι οι εξής
- firstKey() - Επιστρέφει το 1ο κλειδί.
- lastKey() - Επιστρέφει το τελευταίο κλειδί.
- headMap(K toKey) - Επιστρέφει το υποσύνολο του Map που τα κλειδιά του είναι μικρότερα από την τιμή toKey.
- tailMap(K fromKey) - Επιστρέφει το υποσύνολο του Map που τα κλειδιά του του είναι μεγαλύτερα ή ίσα από την τιμή fromKey.
- subMap(K fromKey, K toKey) - Επιστρέφει το υποσύνολο του Set από fromKey (μαζί με το fromKey) έως toKey (χωρίς το toKey).
- NameProperty.java
import java.util.*; public class NameProperty { private String email; private String address; public NameProperty(String mail, String address) { this.email = mail; this.address = address; } public String getEmail() { return email; } public String getAddress() { return address; } public void setEmail(String mail) { email = mail; } public void setAddress(String address) { this.address = address; } public String toString() { return "email: "+email+", address: "+address; } }
- NameSortedMap.java
import java.util.*; public class NameSortedMap { static final Comparator<Name> NameOrdering = new Comparator<Name>() { public int compare(Name n1, Name n2) { int cmp = n1.firstName().compareTo(n2.firstName() ); return (cmp != 0 ? cmp : n1.lastName().compareTo(n2.lastName() )); } }; public static void main(String[] args) { SortedMap<Name,NameProperty> users = new TreeMap<Name,NameProperty>(NameOrdering); users.put(new Name("Bob", "Travolta"), new NameProperty("bob@travolta.com", "Gklavani 37, 1st floor") ); users.put(new Name("John", "Smith"), new NameProperty("john@smith.com", "Gklavani 37, 2nd floor") ); users.put(new Name("Karl", "Ng"), new NameProperty("karl@ng.com", "Gklavani 37, 3rd floor") ); users.put(new Name("Jeff", "Smith"), new NameProperty("jeff@smith.com", "Gklavani 37, 4th floor") ); users.put(new Name("Tom", "Rich"), new NameProperty("tom@rich.com", "Gklavani 37, 5tht floor") ); for(Map.Entry<Name,NameProperty> u: users.entrySet()) System.out.println(u); System.out.println("\n***Print headmap***"); SortedMap<Name,NameProperty> subusers = users.headMap(new Name("Karl", "Ng")); for(Map.Entry<Name,NameProperty> u: subusers.entrySet()) System.out.println(u); System.out.println("\n***Print tailmap***"); subusers = users.tailMap(new Name("Karl", "Ng")); for(Map.Entry<Name,NameProperty> u: subusers.entrySet()) System.out.println(u); } }
java/jfc_intf_sorted_set_map.1427096255.txt.gz · Last modified: 2015/03/23 07:37 (external edit)