Hashmap: Video Erklärung

Ähnliche Dokumente
Selbststudium OOP7 & ALG2 Auftrag

JAVA KURS COLLECTION

ADT: Java Collections und ArrayList

Java Einführung Collections

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Generische Polymorphie in Java-

Einstieg in die Informatik mit Java

17. Hashing. Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren

19 Collections Framework

Hashtags - Klausuraufgaben

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Programmierkurs Java

Mengen und Multimengen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Teil V. Generics und Kollektionen in Java

Java I Vorlesung Collections

II.4.4 Exceptions - 1 -

II.4.5 Generische Datentypen - 1 -

17. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

Programmieren in Java

ADT: Verkettete Listen

Übung Algorithmen und Datenstrukturen

Prof. Dr. Uwe Schmidt. 30. Januar 2017

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Informatik II, SS 2014

Algorithmen und Datenstrukturen 11

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Kapitel 12: Java Collection Teil II

ADT: Verkettete Listen

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren in Java -Eingangstest-

Datenstrukturen und Algorithmen. Vorlesung 5

Lösungshinweise/-vorschläge zum Übungsblatt 10: Software-Entwicklung 1 (WS 2017/18)

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Einführung in die Programmierung

Datenstrukturen. Ziele

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

Datenstrukturen / Container in Java

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Teil VII. Hashverfahren

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

Kapitel 14. Das Java Collection Interface. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Universität Karlsruhe (TH)

Allgemeine Informatik II

Einstieg in die Informatik mit Java

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Transkript:

Hashmap

Hashmap: Video Erklärung

Definition und Motivation Array: Zugriff über Index=Zahl Wert(Value) Schlüssel(Key) Maier, Klaus 21 Array Hashtag: Zugriff über einen nichtnumerischen Wert 06431 92310 Maier, Klaus Hashtabelle Beispiele: Telefontabelle: 06431 92310 Maier, Klaus Bücher: Die 25 Regeln des... BXF 2450 Schule: Anz. der Tischdecken BU 02

Java Objekt: Hashmap I https://docs.oracle.com/javase/7/docs/api/java/util/hashmap.html Site:docs.oracle.com HashMap Datentypen der Parameter

Java Objekt: Hashmap II Leitet sich von AbstractMap ab und import java.util.hashmap; Implementiert Map, Clonable, Serializable

Überblick der Klassenbeziehungen für HashMap Object Map HashMap WeakHashMap HashTable

Java Objekt: Methoden von Hashmap I Import der Java Bibliotheken: import java.util.hashmap; Deklaration einer Instanz(Objekt) von Hashmap: HashMap telefonbuch = new HashMap (); HashMap<Object, Object> telefonbuch = new HashMap<Object, Object>(); Generics : Es dürfen nur noch Objekte mit bestimmten Typ verwendet werden: HashMap<String, Integer> telefonbuch = new HashMap<String, Integer>(); Map<String, Integer> telefonbuch = new HashMap<String, Integer>(); Interface

Java Objekt: Methoden von Hashmap II Zufügen von Einträgen: telefonbuch.put("jana Türlich", 1413); telefonbuch.put("rainer Ernst", 2118); telefonbuch.put("paul Lahner", 4711); telefonbuch.put("jim Panse", 4711); telefonbuch.put("jim Panse", 4711); Bekommt auch den Key 4711 Wird nicht gespeichert, da bereits vorhanden: Size=4 Zugriff auf Telefonnummer bei gegebenen Namen int num = telefonbuch.get("paul Lahner"); System.out.println(num); Ausgabe: 4711 Keine Funktion um bei Key nach Namen zu suchen, da evtl. nicht eindeutig!

Java Objekt: Methoden von Hashmap III Ausgabe aller Werte: for (Integer tel: telefonbuch.values()) System.out.println("Nummer: + " + tel); Ausgabe aller Schlüssel: for (String key: telefonbuch.keyset()) System.out.println("Schlüssel: " + key); Suche nach Wert if(telefonbuch.containsvalue(4711)) System.out.println("Der Eintrag 4711 existiert!"); Suche nach Schlüssel if(telefonbuch.containskey("paul Lahner")) System.out.println("Der Eintrag Paul Lahner existiert!");

Java Objekt: Methoden von Hashmap IV Auflistung mit benutzerdefinierter Methode printhashmap(telefonbuch); Deklaration der Parameter Suche nach Schlüssel public static void printhashmap(hashmap<string, Integer> meintelefonbuch){ Set<String> keys = meintelefonbuch.keyset(); for(string actkey:keys){ System.out.println(actKey+"==>"+meinTelefonbuch.get(actKey)); } Deklaration der Menge; Der Menge wird die Menge aller Schlüssel zugewiesen; benötigt: import java.util.set; Durchläuft alle Elemente der Menge

Java Objekt: Set I Set EnumSet HashSet EnumSet HashSet Import der Java Bibliotheken: import java.util.enumset import java.util.hashset import java.util.linkedhashset import java.util.treeset Typische Methoden: add: Zufügen von einem Element remove: Entfernen von einem Element

Java Objekt: Set II Typische Methoden: add: Zufügen von einem Element remove: Entfernen von einem Element Durchlaufen aller Elemente vom Set: Set seta = new HashSet(); seta.add("element 0"); seta.add("element 1"); seta.add("element 2"); for(object object : seta) String element = (String) object; Neue Instanz von HashSet Zufügen von drei Elementen Durchlauf aller Elemente

Interne Struktur I HashMap speichert die Daten in Form von Wertepaaren. Jedes Wertepaar wird in einem Objekt vom Typ Entry <K,V> abgespeichert. static class Entry<K,V> implements Map.Entry<K,V> { final K key; Schlüssel des Elementes V value; Wert des Elementes Entry<K,V> next; Verweis auf nächstes Objekt int hash; Berechneter Hashwert.. }

Interne Struktur II Alle Elemente in einem Array vom Typ Entry <K,V> abgespeichert. table[] 0 1 2 3 4 5 6 7 null value1 null key1 value1 key2 value2 null Entry<K,V>object

Interne Struktur III public V put(k key, V value) { if (key == null) return putfornullkey(value); int hash = hash(key); int i = indexfor(hash, table.length); for (Entry<K,V> e = table[i]; e!= null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key key.equals(k))) { } } } V oldvalue = e.value; e.value = value; e.recordaccess(this); return oldvalue; modcount++; addentry(hash, key, value, i); return null; Wenn der Schlüssel null ist, wird das Element an Stelle 0 zugefügt Berechnet den HashKey(Schlüssel) Berechnet den Index in table[] für das Key-Value Paar Überprüft, ob der Key bereits in der Tabelle enthalten ist Falls ja, wird der Wert des vorhandenen Schlüssels mit dem neuen Wert ersetzt Falls nein, wird der Eintrag am Ende der verketteten Liste zugefügt

Interne Struktur IV public V get(object key) { if (key == null) return getfornullkey(); int hash = hash(key.hashcode()); for (Entry<K, V> e = table[indexfor(hash, table.length)]; e!= null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key key.equals(k))) return e.value; } return null; } Wenn der Schlüssel null ist, wird die Methode getfornullkey aufgerufen Berechnet den Hash-Wert Verwendet die IndexFor-Methode, um den Index der Key-Value Kombination zu bestimmen Iteriert durch die verkettete Liste an der Position vom Array und vergleicht die Schlüssel. Gefunden: Rückgabe des Wertes Nicht gefunden: Rückgabe von Null