Table of Contents

java.util.Map

Ένα αντικείμενο τύπου Map.Entry αντιστοιχεί “τιμές” σε “κλειδιά”. Τόσο οι τιμές όσο και τα κλειδιά μπορεί να είναι οποιουδήποτε τύπου. Ο στόχος της συγκεκριμένης δομής είναι να μπορούμε έχοντας το κλειδί να λάβουμε την τιμή που αντιστοιχεί σε αυτό. Οι μέθοδοι του interface Map.Entry δίνονται στον παρακάτω πίνακα.

Μία δομή τύπου Map είναι μία δομή που περιέχει εγγραφές τύπου Map.Entry με την ιδιαιτερότητα ότι δεν μπορεί να διαθέτει δύο εγγραφές με το ίδιο κλειδί (μπορεί όμως να διαθέτει δύο εγγραφές με διαφορετικά κλειδιά, αλλά ίδιες τιμές).

Η java διατηρεί τρεις βασικές κλάσεις που υλοποιούν το Map interface, HashMap, TreeMap και LinkedHashMap. Για τα θετικά και τα αρνητικά στοιχεία της κάθε υλοποίησης ανατρέξτε στο interface Set (οι υλοποιήσεις μεταξύ Set και Map είναι ανάλογες ως προς τις δομές δεδομένων που χρησιμοποιούν).

Διαθέτει τις εξής μεθόδους που δεν διατίθενται στο interface Collection ή έχουν διαφορετική λειτουργία από τα interfaces που είδαμε μέχρι τώρα.

Μετατροπή του Map σε μορφή που να μπορείτε να το διατρέξετε (Collection ή Set)

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();
  }
}