This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:jfc_intf_map [2015/03/17 11:31] gthanos |
java:jfc_intf_map [2015/03/23 03:39] gthanos [java.util.Map] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== java.util.Map ====== | ====== java.util.Map ====== | ||
- | Ένα αντικείμενο τύπου //[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html|Map.Entry]]// αντιστοιχεί "τιμές" σε "κλειδιά". Τόσο οι τιμές όσο και τα κλειδιά μπορεί να είναι οποιουδήποτε τύπου και κάθε κλειδί μπορεί να συσχετιστεί αυστηρά με μόνο μία τιμή. Ο στόχος της συγκεκριμένης δομής είναι να μπορούμε έχοντας το κλειδί να λάβουμε την τιμή που αντιστοιχεί σε αυτό. Οι μέθοδοι του interface Map.Entry δίνονται στον παρακάτω πίνακα. | + | Ένα αντικείμενο τύπου //[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html|Map.Entry]]// αντιστοιχεί "τιμές" σε "κλειδιά". Τόσο οι τιμές όσο και τα κλειδιά μπορεί να είναι οποιουδήποτε τύπου. Ο στόχος της συγκεκριμένης δομής είναι να μπορούμε έχοντας το κλειδί να λάβουμε την τιμή που αντιστοιχεί σε αυτό. Οι μέθοδοι του interface Map.Entry δίνονται στον παρακάτω πίνακα. |
{{ :java:map-entry.png |}} | {{ :java:map-entry.png |}} | ||
- | Η java διατηρεί τρεις βασικές κλάσεις που υλοποιούν το //Map// interface, [[https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html|HashMap]], [[https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.htmlTreeMap]] και [[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html|LinkedHashMap]]. | + | Μία δομή τύπου Map είναι μία δομή που περιέχει εγγραφές τύπου //Map.Entry// με την ιδιαιτερότητα ότι δεν μπορεί να διαθέτει δύο εγγραφές με το ίδιο κλειδί (μπορεί όμως να διαθέτει δύο εγγραφές με διαφορετικά κλειδιά, αλλά ίδιες τιμές). |
- | Διαθέτει τις εξής μεθόδους που δεν διατίθενται στο interface Collection ή έχουν διαφορετική λειτουργία από τα interfaces που είδαμε μέχρι τώρα. | + | Η java διατηρεί τρεις βασικές κλάσεις που υλοποιούν το //[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html|Map]]// interface, [[https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html|HashMap]], [[https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html|TreeMap]] και [[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html|LinkedHashMap]]. Για τα θετικά και τα αρνητικά στοιχεία της κάθε υλοποίησης ανατρέξτε στο interface [[java:jfc_intf_set|Set]] (οι υλοποιήσεις μεταξύ //Set// και //Map// είναι ανάλογες). |
+ | |||
+ | Διαθέτει τις εξής μεθόδους που δεν διατίθενται στο interface //Collection// ή έχουν διαφορετική λειτουργία από τα interfaces που είδαμε μέχρι τώρα. | ||
* **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#containsKey(java.lang.Object)|containsKey(Object key)]] -** Επιστρέφει true αν η δομή περιέχει το συγκεκριμένο κλειδί | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#containsKey(java.lang.Object)|containsKey(Object key)]] -** Επιστρέφει true αν η δομή περιέχει το συγκεκριμένο κλειδί | ||
* **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#containsValue(java.lang.Object)|containsValue(Object value)]] -** Επιστρέφει true αν η δομή περιέχει την συγκεκριμένη τιμή αντιστοιχισμένη με ένα ή περισσότερα κλειδιά. | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#containsValue(java.lang.Object)|containsValue(Object value)]] -** Επιστρέφει true αν η δομή περιέχει την συγκεκριμένη τιμή αντιστοιχισμένη με ένα ή περισσότερα κλειδιά. | ||
- | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#remove(java.lang.Object)|remove(Object key)]] -** Διαγράφει την εγγραφή που αντιστοιχεί στο κλειδί | + | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#remove(java.lang.Object)|remove(Object key)]] -** Διαγράφει την εγγραφή που αντιστοιχεί στο κλειδί //key// επιστρέφοντας την τιμή V ή null αν δεν βρέθηκε το κλειδί. |
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#remove(java.lang.Object)|remove(Object key)]] -** Διαγράφει την εγγραφή που αντιστοιχεί στο κλειδί //key// επιστρέφοντας την τιμή V ή null αν δεν βρέθηκε το κλειδί. | ||
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#put(K,%20V)|put(K key, V value)]] -** A Διαγράφει την εγγραφή που αντιστοιχεί στο κλειδί //key// επιστρέφοντας την τιμή V ή null αν δεν υπήρχε προηγούμενη καταχώρηση για το συγκεκριμένο κλειδί. | ||
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#get(java.lang.Object)|get(Object key)]] -** Επιστρέφει την τιμή που αντιστοιχεί στο δεδομένο κλειδί ή null αν δεν υπάρχει καταχώρηση για το συγκεκριμένο κλειδί. | ||
+ | |||
+ | ==== Μέθοδοι με πολλαπλές εγγραφές ==== | ||
+ | |||
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#entrySet()|entrySet()]] -** Επιστρέφει ένα //Set// από καταχωρήσεις τύπου //Entry.Map// όπου κάθε καταχώρηση περιέχει το συνδυασμό κλειδί-τιμή. | ||
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#values()|values()]] -** Επιστρέφει ένα //Collection// με τις τιμές του //Map// δίχως τα κλειδιά. Μία τιμή μπορεί να εμφανίζεται περισσότερες από μία φορές αν αντιστοιχεί σε περισσότερα του ενός κλειδιά. | ||
+ | * **[[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#keySet()|keySet()]] -** Επιστρέφει ένα //Set// με τα κλειδιά. | ||
+ | |||
+ | <code java StudentMap.java> | ||
+ | import java.util.*; | ||
+ | import java.lang.*; | ||
+ | |||
+ | public class StudentMap { | ||
+ | |||
+ | private Map<Integer,Student> students; | ||
+ | |||
+ | public StudentMap() { | ||
+ | students = new LinkedHashMap<Integer,Student>(); | ||
+ | populateMap(); | ||
+ | } | ||
+ | |||
+ | public final void populateMap() { | ||
+ | students.put(1, new Student("John", "Smith")); | ||
+ | students.put(2, new Student("Stanley", "Peters")); | ||
+ | students.put(3, new Student("Edgar", "Bloch")); | ||
+ | students.put(4, new Student("Suzan", "Miles")); | ||
+ | students.put(5, new Student("Mary", "Poppins")); | ||
+ | } | ||
+ | |||
+ | public void iterateMap() { | ||
+ | Set set = students.entrySet(); | ||
+ | Iterator it = set.iterator(); | ||
+ | while(it.hasNext()) { | ||
+ | System.out.println(it.next().toString()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public static void main(String args[]) { | ||
+ | StudentMap stl = new StudentMap(); | ||
+ | stl.iterateMap(); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||