Die Collections II Part 3/3

Maps in der Programmiersprache Java

In den Letzen zwei Reihen unserer Collections II Teile haben wir die List und Sets in Java behandelt. Heute werden wir die Maps in Java behandeln. Die Collection Map ist nicht dieselbe wie das Plattform von Google nämlich GoogleMaps obwohl diese zum Teil mit der Programmiersprache Java geschrieben worden ist.
Eine Map enthält Objekte in einer strukturierten Form. Diese Struktur wird im Interface, auch Schnittstelle genannt, java.util.Map beschrieben, welche von dem Einzelnen Map-Klassen Implementiert wird. Diese Map ist wie eine Wörterbuch aufgebaut. Jeder Eintrag besteht aus einem Schlüssel (key) und dem dazugehörigen Wert (value). Es können beliebige Objekte hinzugefügt oder entfernt werden wie Beispielsweise String, Integer, double, -werte.
Jeder Schlüssel darf in einer Map genau einmal vorhanden sein, wodurch jedes Schlüssel-Wert-Paar einzigartig ist. Beim Einfügen eines Schlüssel-Wert-Paares in eine Map wird zuvor intern überprüft, ob dieser Schlüssen schon vorhanden ist oder nicht. Sollte dies der Fall sein, so bleibt der Map nicht unverändert wie bei den Sets. Der alte Wert zu dem bereits vorhandenen Schlüssel wird dadurch den neuen Wert ersetzt. Man kann dies sich mit einem Beispiel von der Heutigen Computerwelt vorstellen. Kaufen Sie ein neuer Computer oder Smartphone so wird diese alle paar Wochen mit den sogenannten Systemupdates unterstützt. Dabei wird das Gerät aufgefordert, die neue Software komplett neu zu downloaden und danach bei der Installation das alte Betriebssystem oder Applikation zu überschreiben. Das bedeutet, haben Sie sich ein neues Windows gekauft und diese nach paar Wochen aktualisiert (Update) besitzt diese neuen Funktionen. Jedoch bekam das System welches sie beim Kauf erhalten haben keine neuen Funktionen sondern das Betriebssystem wurde nur mit der Neuen überschrieben und darüber hinaus neue Funktionen hinzugefügt. Genau so kann man sich die Maps in Java vorstellen.
In der obigen Übersicht kann man in der ersten Spalte den Schlüssel sehen und in der zweiten Spalte den dazugehörigen Wert. Als Schlüssel haben wir hier die Matrikelnummer des Studenten genommen, da diese eindeutig und diese niemals doppelt vorhanden ist. Als Wert wäre hier der dazugehörige Student einzutragen.
Die Maps in Java bieten unteranderem folgende Methoden zur Auswahl:
public V put(K key, V value)
public V remove(Object key)
public Collection values()
public V get(Object key)
public boolean isEmpty()

Die Methode isEmpty() prüft nach, ob die Map leer ist. Falls diese Map leer ist, wird true und falls diese nicht leer ist wird false ausgegeben. Mit der Methoden put und remove werden Elemente der Map hinzugefügt oder aus ihr entfernt. Die Methode remove gibt den Wert zu gelöschten Schlüssel zurück und die Methode put den Wert zum Schlüssel des einzufügenden Objekts, falls dieser bereits in der Map vorhanden ist. Falls der Schlüssel noch nicht in der Map existiert, wird null zurückgeliefert. Über die Methode get erhält man zu einem bestimmten Schlüssel den dazugehörigen Wert. Die Methode values liefert und eine Collection mit allen Werten der Map zurück. Änderungen an der Collection wirken sich auf die Maps aus und umgekehrt. Auf die Werte kann man denn mittels eines Iterators zugreifen.
Schauen wir uns dazu ein kleines Beispiel einer HashMap an, welches ich ebenfalls auf GitHub hochgeladen habe. Ihr könnt es gerne >>HIER<< Downloaden und selber Kompilieren.

public class Student {
     
      // Attribute name, vorname eines Studenten
      String name, vorname;
      // Atribut matrikelnummer welches eindeutig ist.
      int matrikelnummer;
     
      //Konstruktor für einen Studenten
      public Student(String name, String vorname, int matrikelnummer) {
            this.name = name;
            this.vorname = vorname;
            this.matrikelnummer = matrikelnummer;
      }
     
      //Getter Methode für Matrikelnummer
      public int getMatrikelnummer() {
            return this.matrikelnummer;
      }
}

// import-Anweisung für unsere HashMap
import java.util.HashMap;

public class HashMapTest {
     
      public static void main(String[] args) {
           
            HashMap map = new HashMap();
           
            // Drei Objekte der Klasse Student werden erzeugt.
            Student st1 = new Student("Mayer", "Kai Uwe", 444999);
            Student st2 = new Student("Beckmann", "Niels", 132425);
            Student st3 = new Student("Lopez", "Mario", 973491);
           
            //Einfügen der Objekte in eine HashMap
            //Matrikelnummer wird als Key eingetragen
            map.put(new Integer(st1.getMatrikelnummer()), st1);
            map.put(new Integer(st2.getMatrikelnummer()), st2);
           
            // Student st1 wird durch st3 ersetzt, da die
            // Matrikelnummer schon als Student vergeben worden ist.
            map.put(new Integer(st3.getMatrikelnummer()), st3);
      }
}

Der dritte Aufruf der Methode put führt zu einem Austausch des Studenten-Objekts, da der Schlüssel (hier ist der Schlüssel die Matrikelnummer) schon vorhanden ist. Der alte Wert wird dann zurückgegeben. Eine weitere Map ist die sogenannte TreeMap. In dieser Map werden Objekte sortiert abgelegt. Alle Klassen die in einer TreeMap als Schlüssel dienen sollen, müssen das Interface Comparable implementieren. Dadurch werden Objekte vergleichbar gemacht, indem man die Methode compareTo für die eigene Klasse implementiert.

Die Collections II Part 1/3 könnt ihr >>HIER<< lesen. Dort behandeln wir die List wie ArrayList oder LinkedList.
Die Collections II Part 2/3 könnt ihr >>HIER<< lesen. Dort behandeln wir die Sets in Java wie das HashSet und TreeSet.

Für Fragen stehen wir gerne zur Verfügung.

Kommentare

Beliebte Posts aus diesem Blog

How can I transform a .jar file to a .bat file?

Ein Kleines Spiel mit Altersabfrage

Zufallszahlen und Verzweigungen in Python