java:jfc_intf_map

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:jfc_intf_map [2015/03/23 03:56]
gthanos [Μετατροπή του Map σε μορφή που να μπορείτε να το διατρέξετε (Collection ή Set)]
java:jfc_intf_map [2016/02/26 11:15]
Line 1: Line 1:
-====== java.util.Map ====== 
- 
-Ένα αντικείμενο τύπου //​[[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Map.Entry.html|Map.Entry]]//​ αντιστοιχεί "​τιμές"​ σε "​κλειδιά"​. Τόσο οι τιμές όσο και τα κλειδιά μπορεί να είναι οποιουδήποτε τύπου. Ο στόχος της συγκεκριμένης δομής είναι να μπορούμε έχοντας το κλειδί να λάβουμε την τιμή που αντιστοιχεί σε αυτό. Οι μέθοδοι του interface Map.Entry δίνονται στον παρακάτω πίνακα. 
-{{ :​java:​map-entry.png |}} 
- 
-Μία δομή τύπου Map είναι μία δομή που περιέχει εγγραφές τύπου //​Map.Entry//​ με την ιδιαιτερότητα ότι δεν μπορεί να διαθέτει δύο εγγραφές με το ίδιο κλειδί (μπορεί όμως να διαθέτει δύο εγγραφές με διαφορετικά κλειδιά,​ αλλά ίδιες τιμές). 
- 
-Η 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#​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)]] -** Διαγράφει την εγγραφή που αντιστοιχεί στο κλειδί //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 αν δεν υπάρχει καταχώρηση για το συγκεκριμένο κλειδί. 
- 
-==== Μετατροπή του Map σε μορφή που να μπορείτε να το διατρέξετε (Collection ή Set) ==== 
- 
-  * **[[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 iterateMapEntries() {  
-    Set set = students.entrySet();​ 
-    Iterator it = set.iterator();​ 
-    while(it.hasNext()) { 
-      System.out.println(it.next().toString());​ 
-    } 
-  } 
-  ​ 
-  public void iterateMapValues() {  
-    Collection col = students.values();​ 
-    Iterator it = col.iterator();​ 
-    while(it.hasNext()) { 
-      System.out.println(it.next().toString());​ 
-    } 
-  } 
-  ​ 
-  public void iterateMapKeys() {  
-    Set set = students.keySet();​ 
-    Iterator it = set.iterator();​ 
-    while(it.hasNext()) { 
-      System.out.println(it.next().toString());​ 
-    } 
-  } 
-  ​ 
-  public static void main(String args[]) { 
-    StudentMap stl = new StudentMap();​ 
-    System.out.println("​Map keys are:"​);​ 
-    stl.iterateMapKeys();​ 
-    System.out.println("​Map values are:"​);​ 
-    stl.iterateMapValues();​ 
-    System.out.println("​Map key-value pairs are:"​);​ 
-    stl.iterateMapEntries();​ 
-  } 
-} 
-</​code>​ 
- 
- 
- 
- 
- 
  
java/jfc_intf_map.txt · Last modified: 2016/02/26 11:15 (external edit)