CS1005 Objektorientierte Programmierung

Größe: px
Ab Seite anzeigen:

Download "CS1005 Objektorientierte Programmierung"

Transkript

1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Kollektionen der Java-API Listen Abbildungen Mengen Seite 1 Th Letschert

2 Datenstrukturen Datenstrukturen Sprachelemente zur strukturierten Speicherung komplexer Daten Datentyp und Datenstruktur Datentyp Format / Operationen für ein Datum an einer Speicherstelle Datenstruktur Kollektion von Speicherstellen die zusammen eine (komplexe) Information ausmachen Datenstrukturen Datenstrukturen können auf unterschiedliche Art realisiert werden in die Sprache integrierte Datentypen in der Standardbibliothek der Sprache (API) implementiert selbst implementiert Seite 2

3 Datentypen für Kollektionen Kollektionstyp Datentyp für Kollektionen Datentypen die zur Realisation von Datenstrukturen genutzt werden können Kollektionstypen der Sprache Java Array Arrays sind die einzigen Kollektions-(Daten-)Typen der Bestandteil der Sprache Java ist Tpy int[] = int-array int[] a = {1,2,3,4,5,6,7,8,9,0; Tpy String[] = String-Array String[] b = { "Hallo", "Welt" ; Class Klassen werden genutzt um Daten zu einer Einheit zusammen zu fassen, sie sind aber keine Kollektionstypen im eigentlichen Sinn. class C { static String s1 = "Hallo"; static String s2 = "Welt"; Seite 3

4 Datentypen für Kollektionen Kollektionstypen der Sprache Java Arrays sind der einzige Kollektions-(Daten-)Typen der Bestandteil der Sprache Java ist Seite 4

5 Datentypen für Kollektionen Kollektionstypen der Sprache Java Viele Sprachen können da mehr als Java! Beispiel Telefonverzeichnis: Konzept: Abb.: Name ~> Nummer Implementierung mit Sprachmitteln einer Skript-Sprache (hier Scala): var verzeichnis = Map("Karl Dall" -> "4711", "Karla Kahl" -> "4712"); Implementierung mit Sprachmitteln von Java: Arrays int int Einfach und übersichtlich Strukturierung mit Klassen hier unnötig maxsize = 2; actsize = 0; String[] name = new String[maxSize]; String[] number = new String[maxSize]; name[actsize] = "Karl Dall"; number[actsize] = "4711"; actsize++; Komplex, unübersichtlich! Strukturierung, Kapselung mit Klassen sehr hilfreich. name[actsize] = "Karla Kahl"; number[actsize] = "4712"; actsize++; Seite 5

6 Datentypen für Kollektionen Kollektionstypen der Java-Bibliothek ( Java-API ) Java-API / Java-Bibliothek Sammlung von Java-Klassen die (fast vollständig) in Java implementiert sind dabei Java-Sprachmittel nutzen, mit der Sprache ausgeliefert werden und die Programmierung wesentlich erleichtern. Enthält oft Lösungen für Standard-Probleme der Programmentwickler. Beispiel Telefonverzeichnis: Konzept: Abb.: Name ~> Nummer Implementierung I mit Sprachmitteln einer Skript-Sprache (Scala): var verzeichnis = Map("Karl Dall" -> "4711", "Karla Kahl" -> "4712"); Implementierung II mit der Java-API: Map<String, String> verzeichnis = new HashMap<>(); verzeichnis.put("karl Dall", "4711"); verzeichnis.put("karla Kahl", "Karla Kahl"); Seite 6

7 Kollektionen der Java-API: Array vs. Liste Beispiel Aufgabe: Lies Ganze Zahlen ein und gib sie sortiert aus Lösung mit Sprachmittel Array (1) public class Sort { public static void main(string[] args) { int[] a = new int[5]; // wir nehmen erst mal an das reicht int z = 0; // zaehlt die Eintraege // einlesen while(true) { String input = JOptionPane.showInputDialog("Ganze Zahl bitte:"); if (input == null) { break; int v = Integer.parseInt(input); if (z == a.length) { // a ist voll a = enlarge(a); a[z++] = v; // sortieren sort(a); // ausgeben output(a, z); Seite 7

8 Kollektionen der Java-API: Array vs. Liste Lösung mit Sprachmittel Array (2) private static void output(int[] a, int z) { String s = "["; for (int i=0; i<z; i++) { s = s + a[i] + " "; s = s + "]"; JOptionPane.showMessageDialog(null, s); private static void sort(int[] a, int z) { for (int i=0; i<z; i++) { for (int j=i+1; j<z; j++) { if (a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a[j] = t; private static int[] enlarge(int[] a) { int[] newa = new int[a.length*2]; for (int i=0; i<a.length; i++) { newa[i] = a[i]; return newa; Seite 8

9 Kollektionen der Java-API: Array vs. Liste Beispiel Aufgabe: Lies Ganze Zahlen ein und gib sie sortiert aus Lösung mit Hilfe der Klassenbibliothek (Java-API) package pack_1; import java.util.arraylist; import java.util.list; import java.util.collections; import javax.swing.joptionpane; public class SortB { public static void main(string[] args) { List<Integer> a = new ArrayList<>(); // einlesen while(true) { String input = JOptionPane.showInputDialog("Ganze Zahl bitte:"); if (input == null) { break; int v = Integer.parseInt(input); a.add(v); // sortieren Collections.sort(a); // ausgeben JOptionPane.showMessageDialog(null, a); Seite 9

10 Java-API: Kollektionen Kollektionen Java-Klassenbibliothek Paket java.util enthält Schnittstellen und Klassen zum Umgang mit Kollektionen Collection Framework: Zusammenhängendes System aus Klassen- und Schnittstellendefinitionen in der Klassenbibliothek Kollektionen / Kollektionstypen der Java-Klassenbibliothek gibt es in drei Varianten List Set Map Listen Mengen Abbildungen Dokumentation API: Beschreibt Klassenbibliothek von Java. Collection-Framework ist wichtiger Bestandteil der API Oracle Tutorial zu Kollektionen: Seite 10

11 Java-Kollektion: List Listen java.util.list<e> Datentyp der Listen mit Elementen vom Typ E Verwendung Anwendung benötigt Kollektion von Elementen mit einer von der Anwendung vorgegeben Reihenfolge Liste: Konzept 1) 2) 3) 4) 5) 6) A B C D K L Liste: Benutzerkontrollierte Folge von Elementen: Die Position von x in einem List-Typ hängt davon ab, wohin die Anwendung es positioniert. Seite 11 java.util Interface List<E> Die API-Dokumentation definiert die Fähigkeiten einer Liste

12 Java-Kollektion: ArrayList Listen-Implementierung mit Arrays java.util.arraylist<e> Implementierung von Listen mit Elementen vom Typ E auf Basis von Arrays Verwendung Anwendung benötigt Listen mit seltenem Einfügen und Entfernen innerhalb der Liste 1) 2) 3) 4) 5) 6) A B C D K L java.util Class ArrayList<E> List: Konzept Einer Liste A B C D K L Die API-Dokumentation ArrayList ArrayList: ImplementierungsVariante für Listen Seite 12

13 Java-Kollektion: LinkedList Listen-Implementierung mit verketteten Knoten java.util.linkedlist<e> Implementierung von Listen mit Elementen vom Typ E auf Basis von verketteten Knoten Verwendung Anwendung benötigt Listen mit häufigem Einfügen und Entfernen innerhalb der Liste 1) 2) 3) 4) 5) 6) A B C D K L java.util Class LinkedList<E> List: Konzept Einer Liste Die API-Dokumentation LinkedList A B C D K L LinkedList: ImplementierungsVariante für Listen Seite 13

14 Java-Kollektion: Listen Listen-Beispiel 1 Liste der Fibonacci-Zahlen erzeugen ArrayList verwenden package test; import java.util.arraylist; import java.util.list; public class Fiblist { public static void main(string[] args) { List<Integer> fiblist = new ArrayList<>(); for (int i=0; i<20; i++) { if( i==0 i == 1 ) { fiblist.add(i); else { int v1 = fiblist.get(i-2); int v2 = fiblist.get(i-1); fiblist.add(v1 + v2); Hier hätte man auch eine LinkedList verwenden können. Der Rest des Codes wäre dann identisch. Für die Anwendung ist die ArrayList aber etwas besser geeignet da effizienter. Bei derart kleinen Listen ist der Unterschied allerdings unerheblich. int i = 0; for (int e: fiblist) { System.out.println(i++ + " -> " + e); Seite 14 Welche Listen-Methoden werden hier verwendet? Wie werden sie eingesetzt, was ist ihre Wirkung? Wo findet sich die Beschreibung der Methoden?

15 Java-Kollektion: Listen Listen-Beispiel 2 Zahlen in eine sortierte Liste einfügen LinkedList verwenden. package test; import java.util.linkedlist; import java.util.list; import java.util.scanner; public class SortList { public static void main(string[] args) { List<Integer> sortedlist = new LinkedList<>(); Scanner scanner = new Scanner(System.in); for (int i=0; i<10; i++) { int v = scanner.nextint(); insert(v, sortedlist); int i = 0; for (int e: sortedlist) { System.out.println(i++ + " -> " + e); scanner.close(); private static void insert(int x, List<Integer> l) { int i = 0; while (i < l.size() && x > l.get(i)) { i++; l.add(i, x); Seite 15 Hier hätte man auch eine ArrayList verwenden können. Der Rest des Codes wäre dann identisch. Für die Anwendung ist die LinkedList aber etwas besser geeignet da effizienter. (Häufige Einfüge-Operationen im Innern der Liste.) Bei derart kleinen Listen ist der Unterschied allerdings unerheblich. Welche Listen-Methoden werden hier verwendet? Wie werden sie eingesetzt, was ist ihre Wirkung? Wo findet sich die Beschreibung der Methoden?

16 Java-Kollektion: Map (Abbildung) Abbildungen (Maps) java.util.map<k,v> Datentyp der Abbildungen (Zuordnungen) von Schlüsseln (Keys) vom Typ K zu Werten (Values) vom Typ V Verwendung Anwendung benötigt eine Zuordnung von Werten zu anderen Werten Map: Konzept A B C D K L X Y Z U V W Map: Benutzerkontrollierte Zuordnung von Schlüssel-Werten zu anderen Werten Seite 16 java.util Interface Map<K,V> Die API-Dokumentation definiert die Fähigkeiten einer Map

17 Java-Kollektion: HashMap Map-Implementierung mit Hash-Tabelle java.util.hashmap<k,v> Implementierung von Abbildungen auf Basis von Hash-Tabellen Verwendung Anwendung benötigt Abbildungen mit häufigen Modifikationen (Einfügen, Entfernen, Verändern von Schlüssel-Wert-Paaren) A B C D K L X Y Z U V W java.util Class HashMap<K,V> Die API-Dokumentation HashMap Map: Konzept einer Abbildung D U C Z HashMap: ImplementierungsVariante für Abbildungen K V A X B Y Seite 17 L W

18 Java-Kollektion: TreeMap Map-Implementierung mit Bäumen java.util.treemap<k,v> Implementierung von Abbildungen auf Basis von Baumstrukturen Verwendung Anwendung benötigt Abbildungen mit seltenen Modifikationen (Einfügen, Entfernen, Verändern von Schlüssel-Wert-Paaren) A B C D K L X Y Z U V W java.util Class TreeMap<K,V> Die API-Dokumentation TreeMap Map: Konzept einer Abbildung C Z TreeMap: ImplementierungsVariante für Abbildungen Seite 18 K V A X B Y D U L W

19 Java-Kollektion: Map Map-Beispiel 1 Fibonacci-Zahlen erzeugen HashMap verwenden package test; import java.util.hashmap; import java.util.map; public class FibMapExample { public static void main(string[] args) { Map<Integer, Integer> fibmap = new HashMap<>(); Hier wird die Zuordnung i ~> fib(i) in fibmap gespeichert. for (int i=0; i<20; i++) { if( i==0 i == 1 ) { fibmap.put(i, i); else { int v1 = fibmap.get(i-2); int v2 = fibmap.get(i-1); fibmap.put(i, v1 + v2); for (int e: fibmap.keyset()) { System.out.println(e + " -> " + fibmap.get(e)); Seite 19 Welche Map-Methoden werden hier verwendet? Wie werden sie eingesetzt, was ist ihre Wirkung? Wo findet sich die Beschreibung der Methoden?

20 Java-Kollektion: Map Map-Beispiel 2 / 1 Join berechnen (siehe Skript Diskrete Mathematik / Metz, Skript 12) join Seite 20

21 Java-Kollektion: Map Map-Beispiel 2 / 2 Map<String, String> r5 = new HashMap<>(); r5.put("henrich", r5.put("metz", r5.put("platen", r5.put("renz", r5.put("zink", "MNI" "MNI" "KMUB" "MNI" "KMUB" Map<String, String[]> r5.put("henrich", new r5.put("metz", new r5.put("platen", new r5.put("renz", new r5.put("zink", new ); ); ); ); ); r5 = new HashMap<>(); String[]{"MNI" ); String[]{"MNI" ); String[]{"KMUB" ); String[]{"MNI" ); String[]{"KMUB" ); zur Vereinheitlichung der Speicherung: Alle Spaltenwerte in einem Array. Map<String, String[]> r6 = new HashMap<>(); r6.put("henrich", r6.put("metz", r6.put("platen", r6.put("renz", r6.put("zink", new new new new new String[]{"F String[]{"F String[]{"C String[]{"I String[]{"Q 218", 117", 704", 316", 4", "2335" "2329" "2533" "2451" "2574" ); ); ); ); ); Seite 21

22 Java-Kollektion: Map Map-Beispiel 2 / 3 Map<String, String[]> r6joinr6 = new HashMap<>(); for (String namet1 : r5.keyset()) { for (String namet2 : r6.keyset()) { if (namet1.equals(namet2)) { String[] row1 = r5.get(namet1); String[] row2 = r6.get(namet2); String[] row = new String[row1.length+row2.length]; int i = 0; for(string e: row1) {row[i++] = e; for(string e: row2) {row[i++] = e; r6joinr6.put(namet1, row); Bemerkung: Ein Join kann im allgemeinen nicht so einfach berechnet werden. Seite 22

23 Java-Kollektion: Set Mengen (Sets) java.util.set<e> Datentyp der Mengen Verwendung Anwendung benötigt Menge: Kollektion ohne Duplikate und ohne eigene (durch die Anwendung bestimmte) Sortierung. Erlaubt der Implementierung eine Sortierung nach eigenen Kriterien. (Gut für schnelle Suche oder schnelles Einfügen.) D F B A E C java.util Interface Set<E> Set: Konzept einer Menge Die API-Dokumentation Seite 23

24 Java-Kollektion: Set Mengen-Implementierung mit Bäumen java.util.treeset<e> Implementierung von Mengen mit Bäumen D F B A E C Set: Konzept einer Menge java.util Interface TreeSet<E> Die API-Dokumentation C TreeSet: ImplementierungsVariante für Mengen E A B Seite 24 D F

25 Java-Kollektion: Set Set-Beispiel 1 Mengen werden seltener als Listen und Abbildungen benötigt. Beispiel: Mit der Menge aller Schlüssel einer Abbildung die Abbildung durchlaufen: Map<String, String> dict = new HashMap<String, String>();... List<String[]> l = new ArrayList<String[]>(); for (String k: dict.keyset()) { String[] entry = new String[2]; entry[0] = k; entry[1] = dict.get(k); keyset liefert die Menge aller Schlüsselwerte Seite 25

26 Java-Kollektion: Set Set-Beispiel 2a Relationen sind Mengen Tupeln. Berechne Relation (siehe Skript Diskrete Mathematik / Metz, Skript 12) : package test; import java.util.arrays; import java.util.hashset; import java.util.set; public class Relation { r wird direkt befüllt public static void main(string[] args) { Set<Integer[]> r = new HashSet<>(); r.add(new Integer[]{1,2); r.add(new Integer[]{1,3); r.add(new Integer[]{2,3); for (Integer[] tuple : r) { System.out.println(Arrays.toString(tuple)); Seite 26

27 Java-Kollektion: Set Set-Beispiel 2b package test; import import import import java.util.arrays; java.util.hashset; java.util.set; java.util.treeset; public class Relation { public static void main(string[] args) { Set<Integer> m = new TreeSet<>(); for (int i: new int[]{1,2,3) { m.add(i); r wird durch Berechnung in ein geschachtelten Schleife befüllt. Set<Integer[]> r = new HashSet<>(); for (int i: m) { for (int j: m) { if (i<j) { r.add(new Integer[]{i,j); for (Integer[] tuple : r) { System.out.println(Arrays.toString(tuple)); Seite 27

28 Java-Kollektion: Set Sets: Verwendung Sets nimmt man, wenn man: keine Duplikate speichern will und an einer (Benutzer-definierten) Ordnung nicht interessiert ist Liste: Was ich vorne einfüge, soll auch vorne gespeichert werden Set: Was ich einfüge, das speichere wo du willst Sets nimmt man aber nicht nur, wenn man diese Mengen-Eigenschaften benötigt, sondern auch, wenn Dinge sortiert aufbewahrt werden sollen, ihre Sortierung aber rein intern sein kann. D.h. wenn für die Anwendung die Art (Reihenfolge) der Speicherung nicht interessant ist und die Implementierung darum nach eigenen Vorstellungen speichern darf. Das macht eventuell ein sehr effizientes (weil von der Bibliothek implementiertes) Suchen und Einfügen möglich. Seite 28

29 Java-Kollektion: Set Set-Beispiel 3 Sortieren mit einem TreeSet TreeSet speichert Elemente die vergleichbar sein müssen in einem sortierten Baum. Aus diesem kann man sie sortiert entnehmen. ackage test; import java.util.scanner; import java.util.treeset; public class TreeSort { public static void main(string[] args) { 4 Scanner scanner = new Scanner(System.in); TreeSet<Integer> s = new TreeSet<>(); while (true) { int x = scanner.nextint(); if (x < 0) { break; s.add(x); 8 2 for (int e : s) { System.out.println(e + " "); System.out.println(); 3 scanner.close(); 7 Ein sortierter Baum nach Einfügen von: 4, 2, 8, 7, 3, 55 Seite 29 55

30 Java-Kollektion: Helferklassen Helferklassen Statische Klassen mit nützlichen Funktionen. Helferklassen der Kollektionen: Arrays Helfer-Klasse aus java.util mit statischen Methoden die beim Umgang mit Arrays helfen Collections Helfer-Klasse aus java.util mit statischen Methoden die beim Umgang mit Listen, Maps, Sets helfen. package test; import java.util.arrays; import java.util.collections; import java.util.list; Beispiel zu den Helferklassen Arrays und Collections public class HelperExample { public static void main(string[] args) { List<Integer> l = Arrays.asList(new Integer[]{9,8,2,3,7,4,3); Collections.sort(l); System.out.println(l); Seite 30

31 Datenmodellierung Datenmodelle Repräsentation (Darstellung / Speicherung) von Daten / Informationen innerhalb eines Programms Drei wichtige Konzepte zur Datenmodellierung: mathematisch-orientierte Konzepte: Listen, Abbildungen, Mengen Objektorientiert Relational Werden oft vermischt genutzt Mathematisch-orientierte Modellierung Jede Daten- / Informations-Struktur kann mit Hilfe von mathematischen GrundKonzepten: Listen (=Tupel), Abbildungen, Mengen, dargestellt werden Objektorientiert Die Definition eigener Datentypen und Datenstrukturen wird unterstützt Relational Die Datenmodellierung mit Relationen ( Tabellen ) ist von großer Bedeutung in der Praxis, wird aber von Programmiersprachen kaum unterstützt. Seite 31

32 Datenmodellierung Unterstützung der Datenmodellierung Programmiersprachen unterstützen die Datenmodellierung in unterschiedlicher Weise und unterschiedlich gut: Uralt-Sprache Fortran, Algol, Lisp bieten Arrays (Fortran/Algol) oder Listen (Lisp) als einzige Datenstruktur Sprach-Veteranen C bieten Arrays und wenige andere einfache Datenstrukturen (Union / Struct) sowie den Zugriff auf Adressen (Zeiger / Pointer) zur Realisierung komplexer Datenstrukturen Sprachen für Laien / Skript-Sprachen - Perl, PHP, Scala, bieten Datenstrukturen (Listen, Abbildungen, Mengen) als Sprachbestandteil und bieten so gute Unterstützung für mathematisch-orientierte Modellierung Klassische professionelle Sprachen C++ unterstützen die Definitionen eigener Kollektionen gut (Objektorientierung) moderne professionelle Sprachen C#, Java, aktuelles C++ unterstützen die Definitionen eigener Kollektionen gut (Objektorientierung) bieten Datenstrukturen (Listen, Abbildungen, Mengen) als Bibliotheken (APIs) und bieten so gute Unterstützung für mathematisch-orientierte Modellierung Seite 32

33 Datenmodellierung Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Modellierung einer Tabelle Die Tabelle kann in unterschiedlicher Art modelliert / interpretiert werden, z.b. : als Relation oder als Abbildung Welche Beziehungen werden durch die Tabellenstruktur zum Ausdruck gebracht?. Seite 33

34 Datenmodellierung Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Relationale Sicht Tabelle als Relation (Grundlage der aktuellen Datenbank-Technologie) table = { (Henrich, MNI, F 218, 2335), (Metz, MNI, F 117, 2329), (Platen, KMUB, C 704, 2533), (Renz, MNI, I 316, 2451), (Zink, KMUB, Q 4, 2574) Set<String[]> table.add(new table.add(new table.add(new table.add(new table.add(new table = new HashSet<>(); String[]{"Henrich", "MNI", "F String[]{"Metz", "MNI", "F String[]{"Platen", "KMUB","C String[]{"Renz", "MNI", "I String[]{"Zink", "KMUB","Q 218", 117", 704", 316", 4", "2335"); "2329"); "2533"); "2451"); "2574"); Seite 34 Welche Information geht bei der relationalen Modellierung verloren, bzw. muss zusätzliche gespeichert werden?

35 Datenmodellierung Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Abbildungs-Sicht 1 Tabelle als Abbildung Name ~> Tupel mit Info zum Namen table = { Henrich ~> (MNI, F 218, 2335), Metz ~> (MNI, F 117, 2329), Platen, ~> (KMUB, C 704, 2533), Renz, ~> (MNI, I 316, 2451), Zink, ~> (KMUB, Q 4, 2574) Map<String, String[]> table = new HashMap<>(); table.put("henrich", new String[]{"MNI", "F 218", table.put("metz", new String[]{"MNI", "F 117", table.put("platen", new String[]{"KMUB","C 704", table.put("renz", new String[]{"MNI", "I 316", table.put("zink", new String[]{"KMUB","Q 4", "2335"); "2329"); "2533"); "2451"); "2574"); Seite 35 Wodurch unterscheiden sich Relationen von Abbildungen? Vor- / Nachteile dieser Darstellung im Vergleich zur relationalen?

36 Datenmodellierung Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Abbildungs-Sicht 2 / 1 Tabelle als Abbildung Name ~> ( Attribut ~> Attribut-Wert) table = { Henrich ~> { Fachbereich ~> MNI, Raum ~> F 218, Metz ~> { Fachbereich ~> MNI, Raum ~> F 117, Platen, ~> { Fachbereich ~> KMUB, Raum ~> C 704, Renz, ~> { Fachbereich ~> MNI, Raum ~> I 316, Zink, ~> { Fachbereich ~> KMUB, Raum ~> Q 4, Seite 36 Telefon ~> 2335, Telefon ~> 2329, Telefon ~> 2533, Telefon ~> 2451, Telefon ~> 2574

37 Datenmodellierung Abbildungs-Sicht 2 / 2 Map<String, Map<String, String>> table = new HashMap<>(); Map<String, String> henrich = new HashMap<>(); henrich.put("fachbereich", "MNI"); henrich.put("raum", "F 218"); henrich.put("telefon", "2335"); Map<String, String> metz = new HashMap<>(); metz.put("fachbereich", "MNI"); metz.put("raum", "F 117"); metz.put("telefon", "2329"); Map<String, String> platen = new HashMap<>(); metz.put("fachbereich", "KMUB"); metz.put("raum", "C 704"); metz.put("telefon", "2533"); Map<String, String> renz = new HashMap<>(); metz.put("fachbereich", "MNI"); metz.put("raum", "I 316"); metz.put("telefon", "2451"); Map<String, String> zink = new HashMap<>(); zink.put("fachbereich", "KMUB"); zink.put("raum", "Q 4"); zink.put("telefon", "2574"); table.put("henrich", table.put("metz", table.put("platen", table.put("renz", table.put("zink", henrich); metz); platen); renz); zink); Seite 37

38 Datenmodellierung Datenmodellierung und Klassen Direkte Modellierungen komplexer Daten mit Sprach- oder Bibliotheks-Mitteln erfordert keine Klassen zur Strukturierung Modellierungen komplexer Daten mit primitiven Mitteln erfordert Klassen zur Strukturierung var verzeichnis = Map("Karl Dall" -> "4711", "Karla Kahl" -> "4712"); Modellierung mit Sprachmitteln (Scala) Map<String, String> verzeichnis = new HashMap<>(); verzeichnis.put("karl Dall", "4711"); verzeichnis.put("karla Kahl", "4712"); Modellierung mit API (Java) public class Verzeichnis { static int static int Verzeichnis.put("Karl Dall", "4711"); Verzeichnis.put("Karla Kahl", "4712"); maxsize = 2; actsize = 0; static String[] name = new String[maxSize]; static String[] number = new String[maxSize]; public static void put(string namep, String numberp) { name[actsize] = namep; number[actsize] = numberp; actsize++; Seite 38 Modellierung mit primitiv(er)en Sprachmitteln (Java)

Informatik II. Vordefinierte Datenstrukturen. - Abbildungen Map. Seite 1 Th Letschert, THM

Informatik II. Vordefinierte Datenstrukturen. - Abbildungen Map. Seite 1 Th Letschert, THM Informatik II Vordefinierte atenstrukturen - Listen List - bbildungen Map - Mengen Set Seite 1 Th Letschert, THM atenstrukturen atenstrukturen Sprachelemente zur strukturierten Speicherung von aten atentyp

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstruktur, Datentyp, Datenabstraktion Abstrakter Datentyp / Datenabstraktion Kollektionen

Mehr

OOP Aufgabenblatt Dezember 2013

OOP Aufgabenblatt Dezember 2013 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 9 18. Dezember 2013 Aufgabe 1 Betrachten Sie folgende Anwendung zum Sortieren eingelesener Zahlen: package oop.blatt_9.aufgabe_1.vorgabe; import javax.swing.joptionpane;

Mehr

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java Kapitel 4: Bäume i 1. Einleitung 2. Ein Datenmodell für Listen 3. Doppelt-verkettete Listen 4. Bäume 5. Das Collections-Framework in Java Prof. Dr. Peer Kröger: EiP (WS 18/19) Teil 11: Datenstrukturen

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem

Mehr

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

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Hashmap: Video Erklärung

Hashmap: Video Erklärung 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

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung I : Statische Klassen Statische Aspekte (Modularisierung) Dynamische Aspekte (Klassen-Objekte) Seite 1 Th Letschert

Mehr

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

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik

Mehr

OOP Aufgabenblatt Januar 2014

OOP Aufgabenblatt Januar 2014 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 10 15. Januar 2014 Aufgabe 1 Informationen zu einem beliebigen Objekt können in einer Abbildung als Zuordnung von Attribut und zugehörigem Wert gespeichert werden:

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 21. Datenstrukturen 21.1 Einleitung 21.2 Listen 21.3 Assoziative Speicher 21.4 Bäume 21.5 Mengen 21.6 Das Collections-Framework in Java 21 Datenstrukturen 5 Mengen Einf. Progr. (WS 08/09) 870

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Klassenbibliothek Kollektionen Anforderungen der Kollektionen an ihre Elemente Iteratoren Seite 1 Klassenbibliothek Seite 2 Java

Mehr

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält. Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Interfaces Maps and Collections Iterable Collection Map Vorteile: Set List Queue SortedMap

Mehr

Informatik II Aufgabenblatt 1

Informatik II Aufgabenblatt 1 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 1 Gruppenübung Aufgabe 1 Ein Telefonverzeichnis ist eine Zuordnung (Abbildung) von Namen zu Telefonnummern. Zuordnungen

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

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

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite

Mehr

Informatik II Aufgabenblatt 6

Informatik II Aufgabenblatt 6 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 6 Gruppenübung Aufgabe 1 CSV Dateien sind Textdateien die Zeilen mit Komma-separierten Werten bestehen (CSV = Comma

Mehr

Objektorientierte Implementierung

Objektorientierte Implementierung Objektorientierte Implementierung 10) Verfeinern von Assoziationen mit dem Java-2 Collection Framework Softwaretechnologie, Prof. Uwe Aßmann, Prof. Heinrich Hussmann 1 Objektorientierte Implementierung

Mehr

Grundlagen der Informatik 0

Grundlagen der Informatik 0 Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg

Mehr

Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework

Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl

Mehr

Dynamische Datenstrukturen

Dynamische Datenstrukturen Dynamische Datenstrukturen B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten

Mehr

Informatik Datenstrukturen und Dateien

Informatik Datenstrukturen und Dateien Informatik Datenstrukturen und Dateien Seite 1 Th Letschert Datenstrukturen Datenstrukturen Sprachelemente zur Speicherung von vielen Daten Datentyp vs Datenstruktur Datentyp Format + Operationen für ein

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Felder / Arrays Seite Th Letschert Datentypen und Datenstrukturen Datentyp Format / Operationen für ein Datum c z.b. ganze Zahl im

Mehr

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen Stefan Brass: OOP (Java), 21. Collection Klassen 1/30 Objektorientierte Programmierung Kapitel 21: Einführung in die Collection Klassen Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Aufgabenblatt Ein Multigraph kann als Graph mit gewichteten Kanten interpretiert werden. Erläutern Sie an einem Beispiel.

Aufgabenblatt Ein Multigraph kann als Graph mit gewichteten Kanten interpretiert werden. Erläutern Sie an einem Beispiel. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 7 Aufgabe 1 1. Wann sind zwei oder mehr Mengen disjunkt? 2. Was bedeuten die Begriffe vertex und edge? 3. Was ist ein Multigraph? 4.

Mehr

Abstrakte Datentypen und Java

Abstrakte Datentypen und Java Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD

Mehr

Selbststudium OOP7 & ALG2 Auftrag

Selbststudium OOP7 & ALG2 Auftrag Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void

Mehr

Datenstrukturen / Container in Java

Datenstrukturen / Container in Java Datenstrukturen / Container in Java Mathematik / Algebraischer Datentyp / Containerklassen Enum-Klassen Arrays (Felder) = elementare Container Algorithmen mit Arrays Prof. Dr. E. Ehses, 2014 1 Mathematik

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester

Mehr

Programmiertechnik II Klausur SS 2018 Angewandte Informatik Bachelor

Programmiertechnik II Klausur SS 2018 Angewandte Informatik Bachelor Programmiertechnik II Klausur SS 2018 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 9 2 12 3 12 4 15 48 5 23 6 13 7 20 8 16 Summe 120 Note Prof. Dr. O.

Mehr

Nützliche Utility-Klassen des JDK

Nützliche Utility-Klassen des JDK Nützliche Utility-Klassen des JDK java.util :, Properties, I18N, Scanner java.text : Ausgabeformatierung u.a. java.util.prefs : Hierarchische Konfigurationsdaten (1.5) java.util.logging : Aufzeichnung

Mehr

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 1 Einleitung Collections sind Datenstrukturen für Sammlungen von Daten Stacks Queues Priority

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Datentypen und Datenstrukturen Selbst definierte Datenstrukturen Innere Klassen Seite 1 Typen: 1. Kasper 2. Prinzessin 3. Großmutter

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Java Generics und Java API Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Programme verarbeiten Daten Häufig

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstrukturen I: Lineare Sequenzen / Listen Datenstrukturen für Sequenzen Sequenzen in der Java-API:

Mehr

OCP Java SE 8. Collections

OCP Java SE 8. Collections OCP Java SE 8 Collections Collections (Interfaces) Iterable Collection Set List Queue SortedSet Deque Collection List erlaubt Duplikate und null behält die Reihenfolge Set erlaubt keine Duplikate Queue

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

1. Welches Interface ist nicht von Collection abgeleitet? A. B. C. D. List Set Map SortedSet. 2. Welche Aussagen sind richtig?

1. Welches Interface ist nicht von Collection abgeleitet? A. B. C. D. List Set Map SortedSet. 2. Welche Aussagen sind richtig? Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: baker@gdv.cs.uni-frankfurt.de 1. Welches Interface ist nicht

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

OOP Aufgabenblatt 7 6. Dezember 2013

OOP Aufgabenblatt 7 6. Dezember 2013 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 7 6. Dezember 2013 Aufgabe 1 Hausaufgabe Nr. 4 (Klein) Implementieren Sie, ohne Arrays oder eine sonstige Kollektion zu nutzen, folgende Fingerübungen zu Rekursion

Mehr

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer   144 Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

Mehr

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA) Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA) Ergebnisse teilgenommen: 73 nicht bestanden: 22 bestanden: 51 davon 4er: 12 davon 3er: 18 davon 2er: 15 davon 1er: 6 Aufgabe 1: Tracing 4 Punkte

Mehr

Kapitel 12: Java Collection Teil II

Kapitel 12: Java Collection Teil II Kapitel 12: Java Collection Teil II Übersicht Set und TreeSet Map und TreeMap 12-1 In diesem Kapitel Iterable Interface Klasse extends implements Collection Queue List Set Map Deque

Mehr

Kapitel 12: Java Collection Teil II

Kapitel 12: Java Collection Teil II Kapitel 12: Java Collection Teil II Übersicht Set und TreeSet Map und TreeMap 12-1 In diesem Kapitel Iterable Interface Klasse extends implements Collection Queue List Set Map Deque

Mehr

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur Objektorientierte Programmierung im WS 2003/04 (IA 252) Zeit: 90 Minuten erlaubte Hilfsmittel: keine

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Entwurf von Algorithmen I Rohe Kraft / Erschöpfende Suche Kombinatorische Objekte Entwurf von

Mehr

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

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338 Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!

Mehr

Generische Polymorphie in Java-

Generische Polymorphie in Java- Generische Polymorphie in Java- Johannes Waldmann (HTWK Leipzig) Plan Beispiel Collections, Iteratoren, Maps Schnittstellen und Implementierungen Genaueres zum Typsystem Details zu Implementierungen zur

Mehr

Collections. Arthur Zaczek. Nov 2015

Collections. Arthur Zaczek. Nov 2015 Arthur Zaczek Nov 2015 1 Collections 1.1 Definition Anhäufung von Objekten Werte können hinzugefügt, gesucht und gelöscht werden Implementierung mit verschiedenen Algorithmen, je nach Nutzung 1.2 Grundlegende

Mehr

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Array List Dynamisches Array ArrayList vertritt ein Array mit variabler Länge Kapazität passt sich automatisch

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 6. Juli 2018 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 27. August

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung

Mehr

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 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Java I Vorlesung Collections

Java I Vorlesung Collections Java I Vorlesung 5 Collections 24.5.2004 Abstrakte Klassen und Interfaces Arrays Java Collections Framework Abstrakte Klassen: Motivation Häufig will man eine Klasse schreiben, die nur als Basisklasse

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 29. August 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12. Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis

Mehr

Hashtags - Klausuraufgaben

Hashtags - Klausuraufgaben Hashtags - Klausuraufgaben (1.) Welche Ausgabe hat folgender Quellkode? public class Test public static void main(string args[]) HashMap y = new HashMap(); y.put("paper","x"); y.put("pen","y"); y.put("pencil","z");

Mehr

Collections. Arthur Zaczek

Collections. Arthur Zaczek Collections Arthur Zaczek Nov 2015 1/31 Collections Collections 2/31 Definition Anhäufung von Objekten Werte können hinzugefügt, gesucht und gelöscht werden Implementierung mit verschiedenen Algorithmen,

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.4 Felder Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.4 Felder (Vektoren, "array"s) 2.5 Verschachtelte Schleifen 2.6 "if" Anweisungen 2.7

Mehr

Java Generics & Collections

Java Generics & Collections Praktikum Effizientes Programmieren (Sommersemester 2018) Dennis Reuling 1 / 1 Praktikum Effizientes Programmieren (Sommersemester 2018) Agenda Teil 1 Generics 2 / 1 Praktikum Effizientes Programmieren

Mehr

II.4.6 Collections - 1 -

II.4.6 Collections - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.6 Collections - 1 - Typische Datenstrukturen

Mehr

Datenstrukturen. Ziele

Datenstrukturen. Ziele Datenstrukturen Ziele Nutzen von Datenstrukturen Funktionsweise verstehen Eigenen Datenstrukturen bauen Vordefinierte Datenstrukturen kennen Hiflsmethoden komplexer Datenstrukten kennen Datenstrukturen

Mehr

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik Arrays Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arraytypen Speicherdarstellung von Arrays Auswertung

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Info B VL 14: Java Collections/Reflections

Info B VL 14: Java Collections/Reflections Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

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

17. Hashing. Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren 336 17. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren Motivation 337 Ziel: Tabelle aller n Studenten dieser Vorlesung Anforderung:

Mehr

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Juli 2017 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 28. August

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

Mehr