7. Kapitel COLLECTIONS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Größe: px
Ab Seite anzeigen:

Download "7. Kapitel COLLECTIONS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm"

Transkript

1 7. Kapitel COLLECTIONS Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

2 Übersicht 1 1. Programmstrukturierung mit Paketen (packages) 2. Vererbung 3. Abstrakte Klassen und Interfaces 4. Ausnahmebehandlung 5. Datenströme: die Java IO Bibliothek 6. Multithreading 7. Collections 8. Innere Klassen 9. Generics 10. Reflection

3 Lernziele des Kapitels 2 Kennenlernen des Java Collection API. Die wichtigsten Collections und ihre Eigenschaften näher kennenlernen. Collections einsetzen können. Iteratoren kennen und einsetzen lernen.

4 Inhalt 3 Einführung, Motivation Collection Definition Eigenschaften Die Collection Historie Die ganz alten Collections (seit Java 1) Vector HashTable Das Collection Framework (ab Java 5) Eigenschaften Entwurfsprinzipien Aufbau Auswahl einiger wichtiger Collections Map Set List Iteratoren

5 4 Collection Begriff Collections/ Container = Datenstrukturen, die dazu dienen, Mengen von Daten aufzunehmen und zu verarbeiten. Die Daten werden gekapselt abgelegt, und der Zugriff ist nur mit Hilfe vorgegebener Methoden möglich. Haben wir als ADTs schon in ADS kennengelernt. Typische Collections: Stacks, Queues, Hashtabellen, Listen und Trees. Äquivalenz Collections für Datenstrukturen = Schleifenkonstrukte für Anweisungen. Schleifen: die Wiederholbarkeit und Wiederverwendbarkeit von Code Collections: Zusammenfassung und repetitive Bearbeitung von einzelnen Datenelementen. Verwendung von Collections: oft im Zusammenhang mit Schleifen, z.b. wenn das Programm von seiner Struktur her nicht Einzel, sondern Mengendaten verarbeitet. Hauptrolle von Collections: Elementardaten zu speichern und einen der Bearbeitung angemessenen Zugriff darauf zu ermöglichen. Collections können ganz neue Sichten auf die Daten definieren. Eine Hashtable beispielsweise stellt Daten paarweise zusammen und ermöglicht so die Definition einer Referenzbeziehung, die ohne ihre Hilfe nur schwer herzustellen wäre. Collections in einfachen Programmiersprachen: meist nur in Form von Arrays. In Java und anderen objektorientierten Sprachen: ganze Reihe unterschiedlicher Collections (als ADTs) mit einem viel breiter gefächerten Aufgabenspektrum.

6 5 Motivation: mehr Flexibilität durch geschickte Organisation der ADTs Ziel: Die gespeicherten Daten sollen unabhängig von der Implementierung (der konkreten Datenstruktur) immer mit derselben Technik abgefragt werden können. Um welche Datenstrukturen handelt es sich meistens: Arrays, Bäume etc. Welche Operationen werden gebraucht? Suche: Frage nach der Zugehörigkeit eines Werts zum Datenbestand, also:»gehört das Wort dazu?«. (Wortproblem) Aufzählung der Daten in irgendeiner Weise. Wie können die Operationen realisiert werden? Arrays: Zugriff auf die Elemente über den Index. Aber: nicht immer ein Array der Datenspeicher und die objektorientierte Programmierung verbietet, hinter die Kulisse zu sehen allgemeinerer Weg des Zugriffs über sog. Iteratoren. Dafür gibt es 2 unterschiedliche Interfaces: Enumeration. Iterator.

7 Operationen auf Collections 6 Basisoperationen zum Erfragen der Elementanzahl und zum Hinzufügen, Löschen, Selektieren lk und Finden von Elementen. Mengenoperationen, um etwa andere Collections einzufügen. Feldoperationen bei Collection, um die Sammlung in ein Array zu konvertieren, und bei Map Operationen, um alternative Sichten auf Schlüssel oder Werte zu bekommen.

8 Die Klasse Vector 7 Die Klasse Vector implementiert ein dynamisches Array, das Objekte speichern kann. Die Größe des Vektors wird automatisch an die benötigte Göß Größe angepasst, d.h. dh die Göß Größe it ist zur Laufzeit veränderbar. Elemente können an beliebiger Stelle eingefügt werden. Der Zugriff auf die Elemente: sowohl sequentiell als auch wahlfrei. Die Zugriffe auf vorhandene Elemente und das Durchlaufen des Vector sind schnelle Operationen. Einfügungen und Löschungen, welche die interne Kapazität des Arrays über bzw. unterschreiten, sind relativ langsam, weil Teile des Arrays umkopiert werden müssen. Die Zugriffsoperationen sind sicher.

9 Methoden der Klasse Vector (Auswahl) 8 public Vector() // voreingestellte Kapazität von 10 Elementen public Vector(int initialcapacity) public Vector(int initialcapacity, int capacityincrement) public Vector(Collection c) java.util.vector t public final boolean isempty() public final int size() public void addelement(object obj) public void insertelementat(obj obj, int index) throws ArrayIndexOutOfBoundsException public Object firstelement() throws NoSuchElementException public Object lastelement() throws NoSuchElementException public Object elementat(int index) throws ArrayIndexOutOfBoundsException public Enumeration elements()

10 Iterieren über Vector 9 public boolean hasmoreelements() public Object nextelement() throws NoSuchElementException java.util.enumeration public Enumeration elements() // aus java.util.vector public class MyVector { public static void main(string[] args) { Vector v = new Vector(); Achtung: Uralttechnik! Besser: Iterator verwenden. v.addelement("eins"); v.addelement( addelement("drei"); drei v.insertelementat("zwei",1); for (Enumeration el = v.elements(); el.hasmoreelements(); ) System.out.println((String)el.nextElement());

11 Methoden der Klasse Stack 10 class Stack extends Vector java.util.stack public Object push(object item) public Object pop() public Object peek() public boolean empty() public int search(object o)

12 11 Die Klasse Hashtable Konkretisierung der Klasse Dictionary Konkretisierung der abstrakten Klasse Dictionary. Dictionary speichert immer zusammengehörige Paare von Schlüsseln und Daten (assoziativer Speicher). Der Schlüssel wird als Name des zugehörigen Wertes angesehen. Über den Shlü Schlüssel lkann später der Wert wieder id gefunden werden. Über den Schlüsselbegriff wird ein effizienter Zugriff auf den Wert ermöglicht. Ein Dictionary kann auf unterschiedliche Weise implementiert werden. Die Implementierung Hashtable benutzt das Verfahren der Schlüsseltransformation, also die Verwendung einer Transformationsfunktion (Hash Funktion), zur Abbildung von Schlüsseln auf Indexpositionen eines Arrays. Weitere Konkretisierungen der Klasse Dictionary, etwa auf der Basis binärer Bäume, gibt es in Java derzeit nicht.

13 Methoden der Klasse Hashtable (Auswahl) 12 public Hashtable() java.util.hashtable public Hashtable (int initialcapacity) public void clear() public boolean contains (Object value) public boolean containskey (Object key) public boolean containsvalue (Object value) public Enumeration elements () public Object get (Object key) public Object put (Object key, Object value)

14 Iterieren über Hashtable 13 public class MyHash { public static void main(string[] args) { Hashtable h = new Hashtable(); //Pflege der Aliase h.put("fritz","f.mueller@cmu.sei.edu"); h.put("alex","al@bla-lrbla.com"); h.put( put("sven","s.klaus@hs-mannheim.de de"); h.put("claudia","endl@infotain.com.br"); Alex --> al@bla-lrbla.com lrbla.com Claudia --> endl@infotain.com.br Sven --> s.klaus@hs-mannheim.de //Ausgabe Fritz --> f.mueller@cmu.sei.edu Enumeration e = h.keys(); while (e.hasmoreelements()) { String alias = (String)e.nextElement(); System.out.println(alias + " --> " + h.get(alias));

15 Entwurfsziele für das Collection API (von Java 5) 15 Das API soll vernüftig klein sein bezüglich seines Umfangs und seines Konzepts aber mächtig. Die neue Funktionalität soll die alte erweitern, nicht ersetzen, d.h. für den Programmierer soll sich nicht viel ändern. Wenige Kern Interfaces, die (noch) keine Feinheiten z.b. (variable Größe, Änderbarkeit) festlegen. Um die Anzahl der Methoden in den Kern Interfaces gering zu halten, enthält ein Interface eine Methode nur, wenn Die Operation eine elementare ist, dh d.h. Elementaroperationen mittels derer andere vernünftig beschrieben werden können. Nur aus zwingenden Performancegründen sollten diese Operationen von einer Implementierung überschrieben werden. Alle wichtigen Repräsentationen von Collections sollen interoperabel sein.

16 16 Entwurfsprinzipien des Collection Framworks Schnittstellen legen Gruppen von Operationen für die verschiedenen Behältertypen fest. Beispiele: List Schnittstelle für Sequenzen (Listen), Map Schnittstelle für Assoziativspeicher, die Schlüssel Werte Paare verbinden. Abstrakte Basisklassen führen die Operationen der Schnittstellen auf eine minimale Zahl von als abstrakt deklarierten Grundoperationen zurück. Beispiele: etwa addall() auf add() oder isempty() auf getsize(). Konkrete Klassen für bestimmte Behältertypen beerben die entsprechende abstrakte Basisklasse und ergänzen die unbedingt erforderlichen Grundoperationen (und einige die Performance steigernde Abkürzungen gegenüber der allgemeinen Lösung in der Oberklasse). Sie sind in der Nutzung unsere direkten Ansprechpartner. Beispiele: Für eine Liste entweder die Klasse ArrayList oder die Klasse Vector und als Assoziativspeicher i die Klasse TreeMap. Algorithmen, wie die Suche nach einem Element, gehören zum Teil zur Schnittstelle der Datenstrukturen. Zusätzlich gibt es mit der Klasse Collections eine Utility Klasse mit weiteren Algorithmen.

17 17 Collection Framework (seit Java 5) Sammlung von mehr als 40 Klassen und 14 Interfaces im Paket java.util, die das Collections Framework des JDK bilden. Im wesentlichen die fünf Collection Grundformen: Collection Sammlung von Objekten ohne besondere Ordnung, Duplikate sind zulässig. List ist eine beliebig große Liste von Elementen beliebigen Typs, auf die sowohl wahlfrei als auch sequentiell zugegriffen werden kann. Set ist eine (doublettenlose) ungeordnete Menge von Elementen, auf die mit typischen Mengenoperationen zugegriffen werden kann. Queue Warteschlange mit speziellen Methoden, die auch mit leeren oder überfüllten Warteschlangen ohne Ausnahmen umgehen können. Map ist eine Abbildung von Elementen eines Typs auf Elemente eines anderentyps, also eine Mengezusammengehöriger Paarevon Objekten. Es werden verschiedene Implementierungsvarianten bereitgestellt in Form von Interfaces und einiger abstrakter Basisklassen mit denen die Implementierung eigener Collections vereinfacht werden kann.

18 18 Collection Framework Es gibt jeweils eine oder mehrere konkrete Implementierungen zu den 5 (4) (als (l Interface festgelegten) t )Grundformen. Sie unterscheiden sich in den verwendeten Datenstrukturen und Algorithmen und damit in ihrer Eignung für verschiedene Verwendungsarten. Es gibt eine abstrakte, sog. Rumpfimplementierung p des Interfaces, mit dessen Hilfe das Erstellen eigener Collections erleichtert wird. Schema der Namensgebung der Interfaces und Klassen: Das Interface hat immer den allgemein verwendeten Namen der zu implementierenden Collection (List, Set, Queue, Map). Jede Implementierungsvariante stellt vor den Namen dann eine spezifische Bezeichnung. Sie gibt einen Hinweis auf die Art der verwendeten Datenstrukturen und Algorithmen. Beispiel: i Für das Interface List gibt es die Implementierungsvarianten i t LinkedList und ArrayList sowie die abstrakte Implementierung AbstractList.

19 Die wichtigsten Interfaces des CollectionFramework 19 Iterable Collection Iterator Set List Queue SortedSet Deque BlockingQueue NavigableSet BlockingDeque

20 Collections des Typ Map I I 20 I = Interface K = Klassen Collection Iterator Map SortedMap K AbstractMap tm K IdentityHash HashMap WeakHash TreeMap Map Map K LinkedHash Map PrinterState Reasons

21 HashMap Beispiel 21 import java.util.*; public class MyHashMap { public static void main(string[] args) { HashMap h = new HashMap(); //Pflege der Aliase h.put("fritz","f.mueller@cmu.sei.edu"); h.put("alex","al@bla-lrbla.com"); h.put( put("sven","s.klaus@hs-mannheim.de de"); h.put("claudia","endl@infotain.com.br"); //Ausgabe for (Object o: h.entryset()) { //System.out.println (o); Map.Entry entry = (Map.Entry)o; System.out.println( (String)entry.getKey() t tk () + " --> " + (String)entry.getValue()); Sven --> s.klaus@hs-mannheim.de Alex --> al@bla-lrbla.com Fritz --> f.mueller@cmu.sei.edu Claudia --> endl@infotain.com.br Quelle: [Krüger]

22 Basisinterface Collection 22 Um nicht für jede denkbare Collection Klasse ein eigenes Interface definieren zu müssen, wurde ein BasisinterfaceCollection geschaffen, ausdemdie die meisten Interfaces abgeleitet wurden. Es fasst die wesentlichen Eigenschaften einer großen Menge unterschiedlicher Collections zusammen: int size() boolean isempty() boolean contains(object o) Iterator iterator() Object[] toarray() Object[] toarray(object[] a) boolean add(object o) boolean remove(object o) boolean containsall(collection c) boolean addall(collection c) boolean removeall(collection c) boolean retainall(collection c) void clear() boolean equals(object o) int hashcode() java.util.collection Ändert sich die Zusammensetzung der Collection true

23 Interface Collection 23 Collection +size (): int + isempty (): boolean + contains (o: Object): boolean + iterator (): Iterator + toarray (): Object[] + toarray (a: Object[]): Object[] + add (o: Object): boolean + remove (o: Object): boolean + containsall (c: Collection): boolean + addall (c: Collection): boolean + removeall (c: Collection): boolean + retainall (c: Collection): boolean + clear (): void + equals (o: Object): boolean + hashcode (): int

24 Interface Collection 24 Bis auf die Assoziativspeicher implementieren die Datenstrukturen die Schnittstelle Collection und erhalten damit einen gemeinsamen, äußeren Rahmen. Basis Operationen für hinzufügen, löschen, selektieren und finden von Elementen. Die Collection Schnittstelle wird von mehreren Schnittstellen erweitert. Abgeleitete Schnittstellen schreiben Verhalten vor, ob etwa der Container Werte doppelt beinhalten darf oder die Werte sortiert hält; List, Set und SortedSet sind die wichtigsten. AbstractCollection implementiert Basisfunktionalität und belässt nur noch zwei abstrakte Funktionen.

25 Interface Collection: Beispiel 25 import java.util.*; class ErsteSammlung { public static void main( String args[] ) { Collection c = new LinkedList(); for ( int i = 0; i < 10; i++ ) c.add( "" + i ); for ( Iterator it = c.iterator(); it.hasnext();) System.out.println( it.next() ); Ändern der Implementierung: Collection c = new LinkedList(); Collection c = new ArrayList();

26 Collection: Interface List 26 Eine Collection vom Typ List ist eine geordnete Menge von Objekten. Zugriff auf Elemente entweder sequentiell illoder über ihren Index (ihre Position i in der Liste) zugegriffen werden kann. Wie bei Arrays hat das erste Element den Index 0 und das letzte den Index size() 1. Einfügen/Löschen von Elementen: an einer beliebigen Stelle der Liste. Die weiter hinten stehenden Elemente werden dann entsprechend nach rechts bzw. links verschoben. Des weiteren gibt es Methoden, um Elemente in der Liste zu suchen. Das Interface List ist itdirekt aus dem Interface Collection abgeleitet tund erbt somit dessen Methoden. Zusätzlich gibt es einige neue Methoden, die zum wahlfreien Zugriff auf die Elemente benötigt werden. Einfügen von Elementen: add und addall.

27 Interface List Methoden (Auswahl) 27 void add(int index, Object element) boolean add(object o) boolean addall(collection c) boolean addall(int index, Collection c) Object remove(int index) boolean remove(object o) boolean removeall(collection c) boolean retainall(collection c) Ändert sich die Zusammensetzung der Liste true

28 Collections des Typ List 28 I Collection Iterator I List K K Abstract Collection Abstract List I = Interface K = Klassen Abstract K ArrayList Sequential List Vector K LinkedList Stack

29 Beispiel List(en) 29 import java.util.*; public static void main(string[] args) { //Erzeugen der LinkedList LinkedList list1 = new LinkedList(); public class MyList { filllist(list1); static void filllist(list list) { printlist(list1); for (int i = 0; i < 10; ++i) { //Erzeugen der ArrayList list.add("" + i); ArrayList list2 = new ArrayList(); filllist(list2); list.remove(3); printlist(list2); list.remove("5"); //Test von removeall list2.remove("0"); list1.removeall(list2); static void printlist(list list) { printlist(list1); for (int i = 0; i < list.size(); ++i) { System.out.println((String)list.get(i)); System.out.println("---"); Quelle: [Krüger]

30 Schnittstelle Iterator 30 Iteration bei herkömmlichen Datenstruktur Klassen (und bis JDK 1.2): Enumeration (hasmoreelements(), nextelement()). Mit dem neuen Collection Framework (seit JDK 1.2): Iterator (hasnext(), next (), remove()). Ein Iterator kann die aufgezählte Datenstruktur grundsätzlich verändern (remove), eine Enumeration nicht. Bei allen Collections, die das Interface Collection implementieren, kann ein Iterator zum Durchlaufen aller Elemente mit der Methode iterator beschafft werden. Iterator + hasnext(): boolean + next(): Object + remove(): void

31 Iterator Beispiel 31 import java.util.*; public class MyIterator { public static void main(string[] args) { // Füllen der Liste ArrayList list = new ArrayList(); for (int i = 1; i <= 20; ++i) { list.add("" + i); // Löschen von Elementen über Iterator Iterator it = list.iterator(); while (it.hasnext()) { String s = (String) it.next(); if (s.startswith("1"))it.remove(); //Ausgeben der verbleibenden Elemente it = list.iterator(); while (it.hasnext()) System.out.println((String) it.next()); Quelle: [Krüger]

32 Erweiterte for Schleife 32 Iterieren mit einem Iterator mit der for Schleife: for (Iterator it = ausdruck.iterator(); it.hasnext(); ){ formalerparameter = it.next(); anweisung; Iterieren mit der äquivalenten, erweiterten for Schleife: for (formalerparameter l t : ausdruck ) anweisung; formalerparameter = aus Datentyp und Variablenname bestehende Parameterdeklaration der Art Integer i oder Object o ausdruck = Instanz oder ein Ausdruck des Typs java.lang.iterable oder ein Array.

33 Erweiterte for Schleife Beispiel 33 import java.util.*; public class ForLoop { public static void printvector1(vector v) { for (Iterator it = v.iterator();it.hasnext();){ Object o = it.next(); System.out.println(o); public static void main(string[] args) { Vector v = new Vector(10); for (int i = 0; i < 10; i++) v.add (i, i*i); printvector1(v); printvector2(v); Quelle: [Krüger] public static void printvector2(vector v) { for (Object o : v) System.out.println(o);

34 Erweiterte for Schleife Arrays 34 public static void printarray1(int[] args) { for (int i = 0; i < args.length; ++i) System.out.println(args[i]); public static void printarray2(int[] args) { for (int a : args) System.out.println(a); Wozu die erweiterte for Scheifenichtgenommen werden kann: Das Durchlaufen der Collection von hinten nach vorn. Das simultane Durchlaufen mehrerer Collections. Das Löschen oder Ändern einzelner Elemente während des Durchlaufs.

35 Collections des Typ Set 35 I Collection Iterator I I K Set Abstract Collection SortedSet I = Interface K = Klassen K K AbstractSet HashSet TreeSet K JobState Reasons LinkedHash Set

36 SortedSet Konstruktoren 36 Ein parameterloser Konstruktor erzeugt eine leere Menge, deren (zukünftige) Elemente bezüglich ihrernatürlichen Ordnungsortiertwerden werden. Ein Konstruktor mit einem Argument des Typs Comparator erzeugt eine leere Menge, deren (zukünftige) Elemente bezüglich der durch den Comparator vorgegebenen Ordnung sortiert werden. Ein Konstruktor mit einem Argument vom Typ Collection erzeugt eine Menge, die alle eindeutigen Elemente der als Argument übergebenen Collection in ihrer natürlichen Ordnung enthält. hl Ein Konstruktor mit einem Argument des Typs SortedSet erzeugt eine Menge mit denselben Elementen und derselben Sortierung wie die als Argument übergebene Menge.

37 SortedSet Beispiel 37 import java.util.*; public class MyTSortedSet { public static void main(string[] args) { //Konstruieren des Sets TreeSet s = new TreeSet(); s.add("kiwi"); s.add("kirsche"); s.add("ananas"); s.add("zitrone"); s.add("grapefruit"); s.add("banane"); //Sortierte Ausgabe Iterator it = s.iterator(); while (it.hasnext()) System.out.println((String)it.next()); //Konstruieren des Sets TreeSet s = new TreeSet(new ReverseStringComparator()); s.add("kiwi"); s.add("kirsche"); s.add("ananas"); s.add("zitrone"); s.add("grapefruit"); s.add("banane"); //Sortierte Ausgabe for (Object o: s) System.out.println(o);..... class ReverseStringComparator implements Comparator { public int compare(object o1, Object o2) { return ((String)o2).compareTo((String)o1); Kiwi Ananas Zitrone Banane Grapefruit Kirsche Kiwi Zitrone Quelle: [Krüger] Kirsche Grapefruit Banane Ananas

38 Die Klasse Collections 38 Die Klasse Collections enthält eine große Anzahl von Algorithmen (i.d.f. statischer Methoden) zur Manipulation und Verarbeitung von Collections. Methoden zum Durchsuchen, Sortieren, Kopieren und Synchronisieren von Collections sowie solche zur Extraktion von Elementen mit bestimmten Eigenschaften. static void sort (List list) static void sort (List list, Comparator c) Fehlt der Comparator, wird die Liste in ihrer natürlichen Ordnung sortiert. Dazu müssen alle Elemente das Comparable Interface implementieren und ohne Typfehler paarweise miteinander vergleichbar sein. Gemäß JDK Dokumentation verwendet diese Methode ein modifiziertes Mergesort, das auch im Worst Case eine Laufzeit von O(n*log(n)) hat (auch bei der Klasse LinkedList) und damit auch für große Listen geeignet sein sollte.

39 39 Collections: Problem Typsicherheit 1/2 Großes Problem mit Collections (bis Java 5): sie sind prinzipiell offen für jeden Typ. Man speichert Objekte vom allgemeinsten Typ Object. Beim Lesen der Collection werden diese allgemeinen Objekte auch wieder zurück geliefert. WennmanineinerCollectionApfel Objekte speichert, will man dort keine Birnen Objekte speichern doch mit einen allgemeinen Typ Object kann das nicht verhindert werden. ede Beispiel: Apfel jona = new Apfel(); ArrayList apfelspeicher = new ArrayList(); apfelspeicher.add( jona ); fügt ein Element in die Liste ein, es hätte aber auch apfelspeicher.add(newadd(new Birne()) oder apfelspeicher.add("ätsch") sein können. Der Fehler fällt beim Einfügen nicht auf, doch beim Wiederholen der Daten und anschließender Typanpassung p folgt die (gefürchtete) ClassCastException.

40 Collections: Problem Typsicherheit 2/2 40 Abhilfe seit Java 5 : Die Collection API macht massiven Gebrauch der Generics. Erst dadurch wird bessere Typsicherheit gewährleistet, denn nur ganz spezielle Objekte kommen in die Datenstruktur. Mit den Generics lässt sich bei der Konstruktion einer Collection Datenstruktur angeben, welche Objekte in die Liste aufgenommen werden dürfen.

41 Konkrete Container Klassen (kleine Auswahl) 41 Listen ArrayList Implementiert Listen-Funktionalität wie ein Vector. Sie erweitert dabei die Klasse AbstractList. ArrayList implementiert die Schnittstelle List. LinkedList LinkedList ist eine doppelt verkettete Liste, also eine Liste von Einträgen mit einer Referenz auf den jeweiligen Nachfolger und Vorgänger. Das ist nützlich beim Einfügen und Löschen von Elementen an beliebigen Stellen innerhalb der Liste. Diese Klasse erweitert AbstractSequentialList. Mengen HashSet Eine Implementierung der Schnittstelle Set durch ein schnelles Hash-Verfahren TreeSet Implementierung von Set durch einen Baum, der alle Elemente sortiert hält Assoziativ- HashMap Implementiert einen assoziativen Speicher durch ein Hashspeicher Verfahren. Sie erweitert die Klasse AbstractMap und ist damit auch eine Map. TreeMap Exemplare dieser Klasse halten ihre Elemente in einem Binärbaum sortiert. TreeMap erweitert AbstractMap und implementiert SortedMap. Schlange LinkedList Die verkettete Liste implementiert auch Queue. ArrayBlockingQueue Eine blockierende Warteschlage. PriorityQueue Prioritätswarteschlange.

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

Objektorientiertes Programmieren mit Java

Objektorientiertes Programmieren mit Java Java - Collections Objektorientiertes Programmieren mit Java 1 Java Collections Gliederung Grundlagen Die Klassen Vector, Stack, HashTable und BitSet Der Typ List Iteratoren Set und Map Sortierte Collections

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

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

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

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

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

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API Sebastian java.util.* Draack JAVA Collection-API 1 Collection-API Begriffe Einleitung, Motivation Iterator Comparator Interfaces Abstrakte Klassen Konkrete Klassen Utility-Klassen Beispiele Zusammenfassung

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

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

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

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

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

Kapitel 6: Java Collection Teil I

Kapitel 6: Java Collection Teil I Kapitel 6: Java Collection Teil I Übersicht Bemerkungen Collection List LinkedList und ArrayList Queue und Deque ArrayDeque 6-1 In diesem Kapitel Die Java-API enthält eine Sammlung von generischen Schnittstellen

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

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

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

Kapitel 7: Java Collection Teil I

Kapitel 7: Java Collection Teil I Kapitel 7: Java Collection Teil I! Übersicht! Bemerkungen! Collection! List! LinkedList und ArrayList! Queue und Deque! ArrayDeque Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik II Java Collection

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

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

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Collections Thomas Mauermeier 15.01.2019 Ludwig-Maximilians-Universität München Collections? Was ist eine Collection? Container für mehrere Objekte

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 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

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

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

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung

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

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html

Mehr

Programmiertechnik II

Programmiertechnik II Programmiertechnik II Datentypen Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen:

Mehr

Programmiertechnik II

Programmiertechnik II Datentypen in Java Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen: float,

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

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

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

Objektorientierte Softwareentwicklung

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Part 6 Exceptions und Collections Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur (siehe Part 1) erstellt. Darüber hinaus sind Teile direkt

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

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

Programmiertechnik II

Programmiertechnik II Datentypen in Java Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen: float,

Mehr

Programmieren 2 16 Java Collections und Generizität

Programmieren 2 16 Java Collections und Generizität Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Faulheit professionell: Fertige Datenbehälter

Mehr

Collections des Typs Set. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 09: Collections 3. Collections des Typs Set.

Collections des Typs Set. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 09: Collections 3. Collections des Typs Set. Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Vorlesung 09: Collections 3 Eigenschaften Eine Collection vom Typ Set ist die Java- Repräsentation einer mathematischen Menge. Sie enthält

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 09: Weitere Datenstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Datenstrukturen Motivation Die Collection API Interface Collection

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

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

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

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

Kapitel 14. Das Java Collection Interface. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 14 Das Java Collection Interface 14. Das Java Collection Interface 1. Collections 2. Iteratoren (Iterators) 3. Listen (List) 4. Mengen (Set) 5. Hashtabellen (Map) 6. Generics Folie 14.2 Das Java

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

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

4.4.9 Das Java Collection Framework

4.4.9 Das Java Collection Framework 4.4.9 Das Java Collection Framework eine Sammlung von Interfaces, die die Organisation von Objekten in Container unterstützt Spezifikation von Methoden zur Unterstützung der Erstellung von Collections

Mehr

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Algorithmen und Datenstrukturen in Java 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Enumeratoren und Iteratoren Daten üblich gespeichert in: - Arrays, verketteten Listen, Bäumen, Geläufige

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Parametrisierte Datentypen mit Java Generics Java Collections Framework Parametrisierte

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Abstrakte Datentypen Stack und Queue zu implementieren und anzuwenden Vorteile von parametrischer Polymorphie

Mehr

Java Collections Framework (JCF)

Java Collections Framework (JCF) Algorithmen & Datenstrukturen Bachelor Medieninformatik Fachbereich DCSM FH Wiesbaden University of Applied Sciences Thomas Frenken frenken@informatik.fh-wiesbaden.de Inhaltsverzeichnis 1. Das Java Collections

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

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

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle

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

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

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java Programmierzertifikat Objekt-Orientierte Programmierung mit Java Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2008 Peter Thiemann (Univ. Freiburg) Programmierzertifikat Objekt-Orientierte

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 08: Collections Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 39 Inhalt Collections

Mehr

Kapitel 5: Iterierbare Container

Kapitel 5: Iterierbare Container Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik

Mehr

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Wiederholung: Typvariable Analog zu Variablen, die für Daten stehen, stehen Typvariablen für einen bestimmten Typ Typvariablen werden im in der Klassendefinition nach dem Klassennamen

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 9 Prof. R. Westermann, R. Fraedrich,

Mehr

II.4.4 Exceptions - 1 -

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

Mehr

Grundlagen der Informatik Generische Klassen

Grundlagen der Informatik Generische Klassen Grundlagen der Informatik Generische Klassen Generische Klassen, das Java-Collection-Framework und mehr Generische Programmierung Beobachtung: In vielen Problemstellungen hängt der grundsätzliche Aufbau

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

17. Java Collections. Daten Organisieren. Generische Liste in Java: java.util.list. Typ Parameter (,,Parametrischer Polymorphisums )

17. Java Collections. Daten Organisieren. Generische Liste in Java: java.util.list. Typ Parameter (,,Parametrischer Polymorphisums ) Daten Organisieren Datenstrukturen, die wir kennen 17 Java Collections Generische Typen, Interfaces, Java Collections, Iteratoren Heute: Arrays Sequenzen fixer Grösse Strings Buchstabensequenzen Verkettete

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

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 in Java (Teil 2)

> Datenstrukturen in Java (Teil 2) Datenstrukturen > Datenstrukturen in (Teil 2) Mark Egloff 2006 1 Lernziel Heute Abend > Sie lernen verschieden Datenstrukturen und Ihre Bedeutung kennen z.b. Arrays, Listen, Bäume, Maps > Sie kennen die

Mehr

Collections. Datamining und Sequenzanalyse. Marvin Meusel, Bertram Vogel

Collections. Datamining und Sequenzanalyse. Marvin Meusel, Bertram Vogel Collections Datamining und Sequenzanalyse Marvin Meusel, Bertram Vogel Arrays Arrays Arrays erzeugen int[] arr1 = new int[3] int[] arr2 = {1,2,3 Falls möglich primitive Datentypen verwenden int[] arr1

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Vorlesung 07: Collections. Peter Thiemann SS 2010

Vorlesung 07: Collections. Peter Thiemann SS 2010 Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 45 Inhalt Collections Iteratoren Implementierungen Das Interface Collection Beispiel:

Mehr

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

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

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

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

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

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur C und Objektorientierte Programmierung im WS 2003/04 (WI h103, II h105, MI h353) Zeit: 150 Minuten erlaubte Hilfsmittel:

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

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

Die Java - Collections API

Die Java - Collections API Die Java - API HAW - Hamburg 16. April 2011 Inhaltsüberblick 1 Intention Schlüsselworte Klassenübersicht von und Maps HashCode Binärbäume Interface: Comparable 2 Collection Map 3 List und Queues Sets Maps

Mehr

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.  WS 07/08 Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen

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

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 14: Verkettete Listen Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack 18.

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

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

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Was bisher geschah Bisher wurden zur Gruppierung von Daten immer Arrays genutzt Bis auf die Index-Funktion gibt es allerdings keinerlei logischer Operationen, mit denen der Array manipuliert

Mehr

Collections und Iteratoren ListIterator Sets. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Collections und Iteratoren ListIterator Sets. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Collections und Iteratoren ListIterator Sets 2 / 22 Hierarchie von Collections Die sequenziellen Container (ArrayList

Mehr