Die Collections II Part 3/3
Maps
in der Programmiersprache Java
Für Fragen stehen wir gerne zur Verfügung.
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.
Kommentare
Kommentar veröffentlichen