Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper

Ähnliche Dokumente
OCP Java SE 8. Collections

Nützliche Utility-Klassen des JDK

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

19 Collections Framework

19 Collections Framework

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

Datenstrukturen. Ziele

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

Mengen und Multimengen

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

Mengen und Multimengen

Enterprise Java, Services und Systemintegration. Wie gut kennst Du das Collections Framework? Historie

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

JAVA KURS COLLECTION

Einstieg in die Informatik mit Java

Dynamische Datenstrukturen

Collections. Arthur Zaczek. Nov 2015

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

Grundlagen der Informatik 0

Programmiertechnik II

Propädeutikum Programmierung in der Bioinformatik

Programmiertechnik II

Info B VL 14: Java Collections/Reflections

Software Entwicklung 1

Mocking Libraries Shootout

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

Teil V. Generics und Kollektionen in Java

Programmieren I. Kapitel 13. Listen

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

Sammlungen. Inhalt. Einleitung. Listen und Queues. Mengen. Abbildungen. Algorithmen und Wrapper. Zusammenfassung

Programmiertechnik II

Teil VII. Hashverfahren

Sammlungen. Listen Mengen Abbildungen Algorithmen Wrapper. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

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

Abstrakte Datentypen und Java

Javakurs für Fortgeschrittene

Objektorientierte Implementierung

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen

Programmierkurs Java

Collections. Arthur Zaczek

Java Collections Framework (JCF)

Java Einführung Collections

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

Objektorientiertes Programmieren mit Java

Grundkonzepte java.util.list

Grundlagen der Informatik Generische Klassen

Programmieren in Java

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

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

Praktikum Softwareentwicklung 2

ALP II Dynamische Datenmengen Datenabstraktion

11. Elementare Datenstrukturen

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

Programmiertechnik II WS 2017/18

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Assoziative Container in C++ Christian Poulter

Java-Grundkurs für rtschaftsinformatiker

Objektsammlungen. Programmieren 2. Konzepte (Wiederholung vom Dienstag)

Collections. Datamining und Sequenzanalyse. Marvin Meusel, Bertram Vogel

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

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

Java-Grundkurs für Wirtschaftsinformatiker

Algorithmen und Datenstrukturen CS1017

Software Entwicklung 1

Übung Algorithmen und Datenstrukturen

B2.1 Abstrakte Datentypen

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

Einführung in die STL

Programmierkurs Java

Algorithmen und Datenstrukturen

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Übung Algorithmen und Datenstrukturen

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Programmieren 2 16 Java Collections und Generizität

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Die Java - Collections API

Institut für Informatik

Informatik II. 1. Einführung. Inhalte der Vorlesung. Ziele der Vorlesung. Vorlesung am D-BAUG der ETH Zürich

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

Einführung in die STL

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Kapitel 12: Java Collection Teil II

Kapitel 12: Java Collection Teil II

Sammlungen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Übung SWE 2 1

Fallstudie: Online-Statistik

Programmieren in Java

12. Dynamische Datenstrukturen

12.3 Ein Datenmodell für Listen

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

Wiederholung aus SWE2

Languages and Tools for Object-Oriented Development Klausur Wintersemester 2007/2008

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

Transkript:

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 Queues Trees Maps Collection-Frameworks bieten Schnittstellen und Klassen für den Umgang mit Sammlungen Collection-Frameworks sind ein zentraler Bestandteil jeder Klassenbibliothek z.b. Standard Template Library von C++ Smalltalk's collection classes Namespace von.net Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 2

Historie In der Java-Klassenbibliothek unterscheidet man zwei Mengen von Klassen die Collections realisieren. 1. die traditionellen Klassen (seit 1.0) - Vector - Stack - Hashtable - Dictionary - Bitset 2. das Collection API (seit 1.2) - Umfangreiches API (Sorting...) 1 & 2 existieren seit 1.2 parallel Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 3

Die traditionellen Klassen Realisiert eine Liste mit Direktzugriff die wachsen kann. Stapel (push pop) & Zuordnung von Schlüsseln auf Werte Realisiert eine Menge von Bits die einzeln gesetzt werden können. Unterstützt Operationen wie Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 4

Entwurfsziele des Collection-API in sich konsistentes Framework für Collections stellt alle wesentlichen Features für Collections zur Verfügung trotzdem überschaubar und leicht zu erlernen (siehe Zitat) effizient erweiterbar muss alte Collection-Klassen integrieren Zitat Collections Framework Overview : An interface contains a method only if either: 1. It is a truly fundamental operation: a basic operations in terms of which others could be reasonably defined 2. There is a compelling performance reason why an important implementation would want to override it. Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 5

Collection-Framework Grundlagen Collections-Framework besteht aus: Collection Interfaces Definition von Abstrakten Datentypen. General-purpose Implementations Pimäre Implementierungen der Interfaces Legacy Implementations traditionelle Klassen Wrapper Implementations Möglichkeiten die Basisimplementierungen mit zusätzlicher Funktionalität zu versehen. Convenience Implementations Spezielle hocheffiziente Implementierungen. Abstract Implementations Partielle Implementierungen als Basis für die konkreten Klassen und für eigene Erweiterungen Algorithms Oft gebrauchte nützliche Algorithmen auf Collections Infrastructure Weitere Interfaces als Unterstützung der Collection Interfaces. Array Utilities Zusammenarbeit mit Arrays Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 6

Klassenhierarchie: Interfaces und konrete Klassen Collection Map List Set SortedMap HashMap ArrayList LinkedList SortedSet HashSet TreeMap TreeSet Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 7

Interface ist elementares Interface für Sammlungen Basic Operations (müssen implementiert werden): enthalten sein ist leer und Anzahl der Elemente Iterator Optionale Operationen (können implementiert sein): Anfügen von Elementen Löschen Beibehalten von Elementen)! " # $$ %! &! '! (! )! $$ %! &!! %! &! &! Umwandlung in Arrays $$ %*+&! %*+&%*+! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 8

Anmerkungen zu Gestaltung der Methoden Konkrete Klassen sollten zwei Konstruktoren besitzen Zum Erzeugen einer leeren Sammlung Zum Erzeugen mit Elementen einer exisitierenden Sammlung Optionale Operationen können - %'. werfen z.b. Hinzufügen zu unveränderbare Sammlungen Boolesche Methoden Rückgabewert gibt an ob sich Sammlung verändert hat Verwendung von Wrapper-Klassen für primitive Datentypen / ( 0 Konvertierung in Array Als %-Array Als Array eines bestimmten Typs (Array des gewünschten Typs wird als Parameter übergeben) 012&0! %*+%1&! 3*+313*+&23*4+! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 9

Iteration über Elemente Interface ( dient zum Iterieren über die Elemente ersetzt' aus alter API Elemente können entfernt werden Methodennamen wurden verbessert " ( # 5.! %.!! Beispiel: 5 # ( 1! 2 5.# % 1.! " " 5 #! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 10

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 11

Interface 0 0 ist ein spezielles Interface welches von einer Reihenfolge der Elemente ausgeht Damit hat jedes Element eine Position Und es sind folgende zuätzliche Operationen definiert: Einfügen an einer bestimmten Position Zugriff auf ein Element an einer bestimmten Position Löschen eines Element an einer bestimmten Position Position eines Elements Spezieller 0( " 0. # $$.6%! %.! %.! %.6%! $$.%"%! (.%"%! $$ 0( (! 0( (.! Elemente in einem bestimmten Bereich $$ 0 0 "(.6 (.! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 12

Interface 0( Interface 0( erlaubt erweiterte Iteration über Elemente Damit sind folgende zusätzliche Methoden definiert: Iteration nach hinten und nach vorne Einfügen an der aktuellen Position Setzen des aktuell gelesenen Elements Abfrage der Position des nächsten und vorherigen Elements " 0(. ( # 5.! 3! %.!.(.! %! (.! %!! %! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 13

Implementierungen von Collection-Interfaces AbstractCollection abstrakte Klassen AbstractList AbstractSet AbstractMap Abstract SequentialList LinkedList ArrayList HashSet TreeSet HashMap TreeMap konkrete Klassen LinkedHashSet LinkedHashMap IdentityHashMap Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 14

Implementierungen von Collection-Interfaces: Überblick Implementations Hash Table Resizable Array Balanced Tree Linked List Hash Table + Linked List Set HashSet TreeSet LinkedHashSet Interfaces List ArrayList LinkedList Map HashMap TreeMap LinkedHashMap Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 15

Implementierungen von 0 Es gibt zwei alternative Implementierungen von List: 00: doppelt verkette Liste gut bei Einfügen in der Mitte schlecht bei direktem Zugrif auf Element &0: auf der Basis von Arrays gut bei direktem Zugriff schlecht beim Einfügen von Elementen Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 16

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 17

Interface Entspricht dem mathematischen Konzept der Menge d.h. Elemente können maximal einmal enthalten sein Vergleich der Elemente erfolgt mit 7 prinzipiell als Element zulässig Keine Aussage über Reihenfolge der Elemente hat identische Methoden wie Collection Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 18

Interface wie aber Sortierung der Elemente Sortierkriterium kann sein: : Elemente müssen -Interface implementieren und Vergleich der Elemente erfolgt mittels 8-Methoden : dem wird ein eigenes -Objekt übergeben mit dem die Elemente verglichen werden " # 8%! ". #! % "! % '! %! % "'6% '! % "'! " # % 96% :! 7 %! 7 Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 19

Implementierungen von Implementierungen von : : - Auf der Basis von Hashtabellen - schneller Zugriff und schnelles Einfügen Implementierungen von : 8: - Auf der Basis von Red-Black-Trees - binäre Sortierung Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 20

Beispiel und 3 # %96%:# 3139! 313:! 58 5! 12 82 3! 2 3";6";6"0);! 2 3"/);6"<;6"=);! 2 3"%;6";6">;!$$" Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 21

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 22

Interface < Abbildung von Schlüsseln auf Werte Jeder Schlüssel maximal einmal enthalten Vorsicht bei veränderlichen Schlüsselwerten Jeder Eintrag ist ein Objekt vom Typ <' " < # $$?%! %! % %! '! )! $$! % % 6%! &<! % %! " <' # %?! $$ 2 %!! % %!!! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 23

Interface < wie < aber mit Sortierung der Schlüssel " <.< #! %"?! %?! < <% "?6%? Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 24

Implementierungen von < Implementierungen von <: <: - Auf der Basis von Hashtabellen - schneller Zugriff und Einfügen 0<: - zusätzlich definierte Reihenfolge auf Basis von Linked-Lists ><: - schwache Referenzen der Werte (<: - Vergleich der Keys auf Referenzgleichheit Implementierungen von <: 8<: - Auf der Basis von Red-Black-Trees - binäre Sortierung Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 25

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 26

Hilfsklasse Klasse bietet eine Vielzahl von -Methoden für: Algorithmen Erzeugen von Wrapper für die Collection-Implementierungen Algorithmen in Collections: # 0 6%! 0 6% 6! 0 60! "0 6%! %.! %. 6! %! % 6! 0 6%! 0! ""0! ""0 6@! %! 00%! < <% 6%! 0! 0 6! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 27

Beispiel Algorithmen: Mischen von Karten Folgende Methode mischt Karten 0 "" # *+ 12 *+#;;6;;6;;6; ;! *+122 *+#;;6;:;6;A;6;B;6;C;6;D;6;E;6;F;6 ;G;6;94;6;;6;7 ;6;;! 012 &0! " 14!H!II# " 14!H!II# *+I;";I *+! ""!! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 28

Wrapper Collection-Frameworks erlaubt über Wrapper besimmte Sichten von - Objekten zu erzeugen Diese Sichten realisieren das entsprechende Interface mit bestimmten Zusätzen Zwei wichtige Wrapper sind Wrapper mit: )-Methoden: exklusiver Zugriff auf Collection pro Thread "-Methoden: unveränderliche Sicht auf Collection Klasse bietet Methode solche Wrapper zu erzeugen: )! )! 0)00! < )<<! )! < )<<! "! "! 0 "00! < "<<! "! < "<<! Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 29

Zusammenfassung Listen Elemente in fester Reihenfolge Zugriff auf Elemente über Index möglich Suchfunktionen Mengen Elemente maximal einmal enthalten Eventuell sortiert Abbildungen Abbildung von Schlüsselobjekten auf Wertobjekte Iteration über Elemente Mittels ( beziehungsweise 0( Hilfsklasse Zum Suchen Füllen Mischen und Sortieren Zum Erzeugen synchronisierter oder unveränderbarer Sammlungen Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 30

Literatur Java 2 SDK Standard Edition Documentation Guide to Features - Collection Framework http://java.sun.com/j2se/1.4.2/docs/guide/collections/index.html Horstmann Cornell Core Java 2 Band 2 - Expertenwissen Markt und Technik 2002: Kapitel 2 Krüger Handbuch der Java-Programmierung 3. Auflage Addison-Wesley 2003 http://www.javabuch.de: Kapitel 14 und 15 Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 31