Java Collection Framework
|
|
|
- Tobias Kopp
- vor 9 Jahren
- Abrufe
Transkript
1 Java Collection Framework Programmiermethodik Eva Zangerle Universität Innsbruck
2 Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle Themen Generische Programmierung Java Collection-Framework Streams Unit-Tests Einleitung Ausgewählte Klassen Iteratoren Wichtige Themen Entwurfsmuster - Eine Einführung GUI-Programmierung Java Virtual Machine Ausblick Programmiermethodik - Java Collections 2
3 Einleitung
4 Motivation Programmierer benötigt sehr oft bestimmte Datenstrukturen. Datenstrukturen sollten schon vorhanden sein. Datenstrukturen sollten generisch sein. Allgemeine Algorithmen (anwendbar auf unterschiedliche Datenstrukturen) sollten vorhanden sein. Lösung? Java Collection-Framework Programmiermethodik - Java Collections 4
5 Grundlagen Collection-Framework befindet sich im Paket java.util. Für unterschiedliche Datenstrukturen stehen unterschiedliche Interfaces zur Verfügung. Die Interfaces geben die Schnittstellen für den Zugriff auf die Datenstrukturen an (z.b. Einfügen in Listen). Die konkrete Verwaltung wird durch konkrete Implementierungen dieser Interfaces bestimmt. Seit Java 1.5 ist das Collection-Framework generisch. Jedes Interface kann durch unterschiedliche Implementierungen unterstützt werden (z.b. LinkedList, ArrayList). Es gibt Algorithmen, die auf Collection-Objekte (Listen etc.) angewandt werden können (z.b. Sortieren). Programmiermethodik - Java Collections 5
6 Interfaces (Überblick) Interfaces sind die Grundlage (java.util.collection oder java.util.map) Basisoperationen (Hinzufügen, Finden, etc.) Mengenoperationen (andere Collection einfügen) Feldoperationen (z.b. andere Ansichten auf key/value) Applikationen sollten ihren Code ausschließlich auf Interfaces aufbauen Austauschbarkeit. Interfaces bilden Hierarchien. Programmiermethodik - Java Collections 6
7 Collection Interfaces (Seit 1.5) Collection Eine Collection verwaltet Objekte (Elemente). Interface enthält generelle Methoden (für alle Collection-Typen). Es gibt keine direkte Implementierung dieses Interfaces. Set Eine Collection die keine duplizierten Elemente enthält. List Eine geordnete Collection (mit duplizierte Elementen) Elemente können über einen Index angesprochen werden (nicht immer effizient). Queue Verwaltung von Warteschlangen (ähnlich zu Listen) FIFO, Prioritätswarteschlangen Map SortedSet und SortedMap Maps verwalten Schlüssel mit dazugehörigen Werten. Schlüssel sind eindeutig. Jeder Schlüssel kann einen dazugehörigen Wert haben. Sind spezielle Versionen von Set und Map, bei denen die Elemente (Schlüssel) in aufsteigender Reihenfolge verwaltet werden. Programmiermethodik - Java Collections 7
8 Implementierung Es gibt unterschiedliche Ansätze für die Implementierung von konkreten Collection-Klassen: Generelle Implementierungen, die häufig in Applikationen verwendet werden. Spezielle Implementierungen Nebenläufige Implementierungen (für Multithreaded-Applikationen, siehe Entwurf von Softwaresystemen). Wrapper-Implementierungen, die mit anderen Implementierungen benutzt werden (oft generelle Implementierungen) und zusätzliche oder eingeschränkte Funktionalität zur Verfügung stellen. Einfache effiziente Implementierungen (Mini-Implementierungen) für spezielle Collections. Abstrakte Implementierungen, die ein Implementierungsskelett zur Verfügung stellen und damit die Implementierung eigener Collection- Klassen erleichtern. Programmiermethodik - Java Collections 8
9 Generelle Implementierungen (1) Implementierungen Interface Hashtabellen Dynamische Arrays Bäume Verkettete Listen HashTabellen + Verkettete Listen Set HashSet TreeSet Linked- HashSet List ArrayList LinkedList Queue LinkedList Map HashMap TreeMap Linked- HashMap Programmiermethodik - Java Collections 9
10 Generelle Implementierungen (2) Es existieren generelle Implementierungen für die Interfaces Set, List und Map. Interfaces SortedSet und SortedMap werden von TreeSet bzw. TreeMap zusätzlich implementiert. Queue-Interface wird z.b. von den folgenden Klassen implementiert: LinkedList FIFO Warteschlangen PriorityQueue Prioritätswarteschlange (ist eher eine spezielle Implementierung) Programmiermethodik - Java Collections 10
11 Seit Java 1.6 Deque (Double ended queue) Einfügen und Löschen an beiden Enden Wird u.a. von der Klasse LinkedList implementiert. NavigableSet und NavigableMap Sollen SortedSet und SortedMap ersetzen. Sind Erweiterungen, die das Navigieren (aufsteigend, absteigend) erlauben. Zusätzliche nebenläufige Implementierungen (siehe Entwurf von Softwaresystemen) Zusätzliche Hilfsmethoden Programmiermethodik - Java Collections 11
12 Ausgewählte Klassen
13 Eigenschaften ausgewählter Klassen ArrayList Indexzugriff auf Elemente ist überall ungefähr gleich schnell. Einfügen und Löschen ist am Listenende schnell und wird mit wachsender Entfernung vom Listenende langsamer. LinkedList Indexzugriff auf Elemente ist an den Enden schnell und wird mit der Entfernung von den Enden langsamer. Einfügen und Löschen ohne Indexzugriff ist überall gleich schnell. Ansonsten abhängig vom Indexzugriff. HashSet null-elemente sind zulässig. Einfügen, Suchen und Löschen sind immer gleich schnell. Aber: Rehashing kann zu Performance-Problemen führen (siehe auch API- Beschreibung). TreeSet null-elemente sind nicht erlaubt. Die Geschwindigkeit von Einfügen, Suchen und Löschen ist proportional zum Logarithmus der Anzahl der Elemente. Auf die Elemente eines TreeSets muss eine Ordnung definiert sein (müssen vergleichbar sein, d.h. das Interface Comparable<T> implementieren). Programmiermethodik - Java Collections 13
14 Methoden (Beispiele) Für Listen und Sets gibt es einige gemeinsame Methoden. Beispiele (T ist der Elementtyp) int size() boolean add(t t) boolean remove(t t) boolean contains(t t) T get(int i) T set(int i, T t) int indexof(t t) Programmiermethodik - Java Collections 14
15 Beispiel import java.util.arraylist; import java.util.list; public final class CollectionTest1 { private CollectionTest1() { } Immer kleinstmöglichen Typ verwenden! } public static void main(final String[] args) { final List<Integer> cl = new ArrayList<Integer>(); for (int x = 1; x < 10; x++) { cl.add(x); } } System.out.println(cl); System.out.println(cl.get(3)); System.out.println(cl.size()); System.out.println(cl.remove(2)); System.out.println(cl); System.out.println(cl.contains(7)); System.out.println(cl.set(5, 22)); System.out.println(cl); System.out.println(cl.indexOf(22)); Ausgabe [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 4, 5, 6, 7, 8, 9] true 7 [1, 2, 4, 5, 6, 22, 8, 9] 5 Programmiermethodik - Java Collections 15
16 Maps Arrays und Collections speichern einzelne Werte des Elementtyps (über Indexwerte adressiert, Typ der Indexwerte ist int). Maps sind eine Verallgemeinerung von Arrays mit einem beliebigen Indextyp. Beispiel Telefonbuch Name mit Telefonnummer verknüpft. Indextyp ist daher String (Name). Map-Eintrag hat einen Schlüssel (key) und einen Wert (value). Programmiermethodik - Java Collections 16
17 Maps (key-value) Jedem Schlüssel ist genau ein Wert zugeordnet. Eine Map ist eine Menge von Schlüssel-Werte Paaren. Schlüssel müssen innerhalb einer Map eindeutig sein. Werte müssen nicht eindeutig sein. Wie bei Sets gibt es grundsätzlich zwei Versionen. HashMap Ungeordnet Hashing TreeMap Geordnet Rot-Schwarz-Baum (balanciert) Bestimmte Methoden wie put, get, containskey, containsvalue, remove etc. werden angeboten. Programmiermethodik - Java Collections 17
18 Beispiel import java.util.hashmap; import java.util.map; public final class CollectionTest2 { } public static void main(final String[] args) { final Map<String, Double> m = new HashMap<String, Double>(); m.put("pc 1", ); m.put("spiele-pc", ); m.put("my-cloud", ); System.out.println(m); System.out.println(m.get("PC 1")); System.out.println(m.containsKey("PC 1")); System.out.println(m.remove("PC 1")); System.out.println(m); } Ausgabe: {Spiele-PC=2500.0, My-Cloud= , PC 1=1199.9} true {Spiele-PC=2500.0, My-Cloud= } Programmiermethodik - Java Collections 18
19 Maps (equals, hashcode) HashMap und andere Klassen des Collection-Frameworks rufen die Methode equals auf, um die Gleichheit von Schlüsselobjekten (Elementen) festzustellen. Weiters wird von einigen Klassen die Methode hashcode verwendet. Daher sollten alle Klassen die Methoden equals und hashcode überschreiben. Die von der Klasse Object geerbten Versionen dieser Methoden sind selten ausreichend, weil sie nur die Referenzen prüfen, den Inhalt aber ignorieren. Programmiermethodik - Java Collections 19
20 Maps und Collections (1) Maps implementieren nicht das Interface Collection, sind aber Teil des Collection-Frameworks. Maps und Collections können verknüpft werden. Methode keyset liefert die Menge aller Schlüssel einer Map in Form eines Sets. Methode values liefert die Werte der Map. Über die Organisation der Werte ist nichts bekannt. Das Ergebnis ist vom Typ Collection. Programmiermethodik - Java Collections 20
21 Maps und Collections (2) Die Methode entryset liefert die Menge der Einträge der Map. Der Elementtyp ist Map.Entry<K,V> für eine Map mit dem Schlüsseltyp K und dem Werttyp V. Map.Entry definiert die Methoden: getkey getvalue Maps kennen keine Iteratoren, Sets hingegen schon. Daher kann man auf diesem Wege über eine Map iterieren. Beispiel folgt! Programmiermethodik - Java Collections 21
22 Maps und Collections (3) Die drei Methoden keyset, values und entryset erzeugen keine neue Collection. Sie liefern sogenannte Sichten ( views ). Daher sind diese Methoden auch bei großen Datenmengen sehr effizient. Es werden keine Daten kopiert! Sichten greifen direkt auf die zugrunde liegende Map zu. Änderungen an den Sichten wirken sich auf die darunterliegende Map aus und umgekehrt. Wird eine Map geändert, dann wirkt sich das auf alle Sichten aus. Programmiermethodik - Java Collections 22
23 Iteratoren
24 Iteratoren allgemein (1) Durchlaufen von Collections Iterator wird durch eine Methode (z.b. iterator) angeboten (zurückgegeben). Ein Iterator bietet folgende Methoden an hasnext testet, ob es weitere Elemente gibt (true) oder nicht (false). next liefert das nächste Element und rückt den Iterator gleichzeitig um ein Element weiter, d.h. aufeinanderfolgende Aufrufe von next liefern immer neue Elemente. remove (optional) entfernt das zuletzt zurückgegebene Element. Programmiermethodik - Java Collections 24
25 Iteratoren allgemein (2) Iteratoren sind eine Verallgemeinerung von Indexwerten. Werden ähnlich wie Indexwerte verwendet, ihr innerer Aufbau bleibt aber verborgen. Alle Iteratoren implementieren das generische Interface Iterator<T>. Iteratoren haben den gleichen Elementtyp wie die zugrunde liegende Collection. Programmiermethodik - Java Collections 25
26 Eigenschaften von Iteratoren Ein Iterator läuft von Beginn an Element für Element durch eine Collection (keine Sprünge, kein Start an beliebiger Stelle). Ein Iterator steht immer zwischen zwei Elementen (oder vor dem ersten, nach dem letzten). Iterator ist verbraucht, wenn er am Ende angekommen ist (keine Wiederverwendung). Für einen neuen Durchlauf muss ein neuer Iterator erzeugt werden. Innerhalb einer Collection können gleichzeitig mehrere Iteratoren unterwegs sein. Mehrere Iteratoren sind unabhängig voneinander und können einzeln bewegt werden. Programmiermethodik - Java Collections 26
27 Beispiel (ArrayList) List<String> ls = new ArrayList<String>(); ls.add("a"); ls.add("b"); ls.add("a"); Muss übereinstimmen! ls.add("b"); Iterator<String> is = ls.iterator(); while (is.hasnext()){ String s = is.next(); if (s.equals("a")) is.remove(); } System.out.println(ls); // [B B] Programmiermethodik - Java Collections 27
28 Beispiel (Iterator, Map) import java.util.hashmap; import java.util.iterator; import java.util.map; import java.util.set; public final class CollectionTest3 { private CollectionTest3() { } } public static void main(final String[] args) { final Map<String, Double> m = new HashMap<String, Double>(); } m.put("pc1", ); m.put("pc2", ); m.put("pc3", ); System.out.println(m); final Set<Map.Entry<String, Double>> mes = m.entryset(); final Iterator<Map.Entry<String, Double>> imes = mes.iterator(); while (imes.hasnext()) { final Map.Entry<String, Double> item = imes.next(); if (item.getvalue() > 1000) { System.out.println(item.getKey()); } } Iterator über die Menge der Einträge Ausgabe: {PC3=980.0, PC1=1199.9, PC2=1999.9} PC1 PC2 Programmiermethodik - Java Collections 28
29 Listen-Iteratoren Für Listen gibt es noch eigene Iteratoren. Diese implementieren das Interface ListIterator<T>. Ein Listen-Iterator kann sich vorwärts und rückwärts bewegen. Zusätzlich zu den Methoden eines Iterators werden zum Beispiel angeboten: previous und hasprevious, die sich auf das vorhergehende Element beziehen. previousindex und nextindex liefern die Indexwerte des vorhergehenden und nächsten Elements. Ein Listen-Iterator ist nicht verbraucht, wenn er am Ende der Liste angekommen ist. Programmiermethodik - Java Collections 29
30 Modifikation und Iteratoren (1) Wird eine Collection modifiziert (z.b. neues Element einfügen), dann werden alle Iteratoren ungültig. Beim nächsten Zugriffsversuch auf einen Iterator nach einer Änderung wirft dieser eine ConcurrentModificationException. Wird als fail-fast bezeichnet. Iterator gerät nicht irgendwann in einen inkonsistenten Zustand. Iterator wird sofort unbrauchbar gemacht. Iteratoren reagieren nur auf strukturelle Änderungen, d.h. Ersetzen eines Elements verändert die Struktur nicht und lässt Iteratoren intakt. Programmiermethodik - Java Collections 30
31 Modifikation und Iteratoren (2) Iteratoren bieten selbst Änderungsoperationen an, bei denen der betreffende Iterator funktionsfähig bleibt. Alle Iteratoren definieren die Methode remove, die das zuletzt überquerte Element aus der Collection entfernt. Aber Iterator muss sich zuerst bewegen, dann erst kann remove aufgerufen werden (löscht das letzte Element, das zurückgegeben wurde). Nach einem Aufruf muss erst wieder ein Element überquert werden. Bei Listen-Iteratoren ist das zuletzt überquerte Element abhängig von der Laufrichtung (kann vom Listenanfang aus gesehen vor oder hinter dem Iterator sein). Programmiermethodik - Java Collections 31
32 Modifikation und Iteratoren (3) Bei Listen-Iteratoren gibt es neben remove noch zusätzliche Methoden. add fügt das Element in der Lücke ein, in der der Iterator steht. set ersetzt das zuletzt überquerte Element durch das übergebene Element. Bei Änderungen über einen Iterator bleibt nur dieser eine Iterator intakt. Andere Iteratoren, die in der gleichen Collection unterwegs sind, werden ungültig (bei set bleiben alle intakt keine Strukturänderung). Programmiermethodik - Java Collections 32
33 foreach - Schleife So wie Arrays können auch Collections mit der foreach- Schleife durchlaufen werden. Beispiel List<Integer> cl = new ArrayList<Integer>(); for (Integer in : cl) System.out.println(in); Die foreach-schleife unterliegt den gleichen Beschränkungen wie bei Arrays. foreach-schleifen arbeiten wie Iteratoren. Eine Änderung der Collection während des Durchlaufens führt zu einer Ausnahme. Implementiert eine Klasse das Interface Iterable<T>, dann können Objekte dieser Klasse mit einer foreach-schleife durchlaufen werden. Programmiermethodik - Java Collections 33
34 Wichtige Themen
35 Abstrakte Collection-Klassen Unterstützen die Entwicklung neuer Collection-Klassen. Abstrakte Klassen implementieren schon einen großen Teil eines Interfaces und lassen bestimmte Teile noch offen. Eine neue Collection-Klasse kann daher schon auf eine abstrakte Klasse aufbauen (muss nicht alle Methoden eines Interfaces implementieren). Vorgehensweise bei der Implementierung einer neuen Collection-Klasse: 1. Auswählen einer geeigneten abstrakten Klasse von der geerbt wird. 2. Implementierung aller abstrakten Methoden. 3. Sollte die Collection modifizierbar sein, dann müssen auch einige konkrete Methoden überschrieben werden (wird in der API- Dokumentation der abstrakten Klasse beschrieben). 4. Testen der neuen Klasse (inklusive Performance). Programmiermethodik - Java Collections 35
36 Beispiele für abstrakte Klassen Beispiele AbstractCollection AbstractSet AbstractList (basierend auf Array) AbstractSequentialList (basierend auf verketteter Liste) AbstractQueue AbstractMap In der API-Dokumentation jeder abstrakten Klasse wird genau beschrieben, wie man eine Klasse davon ableiten muss. Grundlegende Implementierung Welche Methoden müssen implementiert werden. Welche Methoden müssen überschrieben werden, wenn man Modifikationen zulassen möchte. Programmiermethodik - Java Collections 36
37 Algorithmen im Collection-Framework Das Collection-Framework bietet neben vielen vordefinierten Containerklassen auch Algorithmen für die Verarbeitung von Container-Klassen an. Diese Algorithmen werden als statische Methoden (polymorphe Methoden) in der Hilfsklasse Collections gesammelt. Algorithmen (Beispiele) sort Sortiert die Elemente einer generischen Liste nach aufsteigender Größe. binarysearch Sucht ein Element in der sortierten Liste (Voraussetzung) und liefert einen Index zurück, wenn das Element gefunden wurde (ansonsten eine negative Zahl). max Liefert das größte Element einer Collection. shuffle Mischt die Elemente einer generischen Liste zufällig. Programmiermethodik - Java Collections 37
38 Vergleiche Viele Methoden (z.b. sort, binarysearch) vergleichen Elemente der Größe nach. Für beliebige Elementtypen ist aber nicht ohne weiters klar, welches von zwei Objekten das größere ist. Klassen müssen das generische Interface Comparable<T> implementieren. Es muss die Vergleichsmethode compareto implementiert werden, mit dem Ergebnis > 0 wenn das Objekt größer als der Parameter ist, < 0 wenn das Objekt kleiner als der Parameter ist, 0 wenn das Objekt und der Parameter gleich sind. Programmiermethodik - Java Collections 38
39 Comparator Oft sollen Objekte nach verschiedenen Kriterien verglichen werden. Daher sind viele Collection-Methoden mit einem zusätzlichen Parameter, einem Comparator, überladen. Erfüllt den gleichen Zweck. Zum Vergleich wird aber das übergebene Comparator-Objekt benutzt. Comparator<T> ist ein generisches Interface mit einer Methode compare. Methode akzeptiert zwei Objekte des Elementtyps und liefert ein int- Ergebnis für den Vergleich der zwei Objekte. Programmiermethodik - Java Collections 39
40 Comparator-Beispiel List<String> ss = new ArrayList<String>(); ss.add("hans"); ss.add("sepp"); ss.add("franz"); System.out.println(ss); // [Hans, Sepp, franz] Collections.sort(ss); System.out.println(ss); // [Hans, Sepp, franz] Comparator<String> ignorecasecomparator = new Comparator<String>() { public int compare(string s1, String s2) { return (s1.tolowercase().compareto(s2.tolowercase())); } }; Collections.sort(ss, ignorecasecomparator); System.out.println(ss); //[franz, Hans, Sepp] Programmiermethodik - Java Collections 40
41 Unveränderliche Collection-Klassen In vielen Fällen möchte man Container-Klassen zur Verfügung stellen, die unveränderlich sind. Die Klasse Collections bietet einige statische Methoden, mit denen unveränderliche Sichten auf vorhandene Container erzeugt werden können. Sichten auf eine Datenstruktur kopieren eine zugrunde liegende Datenstruktur nicht. Bieten eine eingeschränkte Darstellung (z.b. Sperren aller schreibenden Methoden). Die Datenstruktur wird nicht verändert. Programmiermethodik - Java Collections 41
42 Beispiel Methoden (Beispiele) public static <T> List<T> unmodifiablelist(list<? extends T> list) public static <K,V> Map<K,V> unmodifiablemap(map<? extends K,? extends V> m) public static <T> Set<T> unmodifiableset(set<? extends T> s) Anwendung HashMap<String,Integer> m = new HashMap<String,Integer>(); Map<String,Integer> rom = Collections.unmodifiableMap(m); m.put("test",1); // rom.put("test",1);fehler! Programmiermethodik - Java Collections 42
43 Übersicht (wichtige Klassen) Typ Ordnung bleibt Null-Elemente Duplikate ArrayList ja ja ja LinkedList ja ja ja HashSet nein ja nein TreeSet ja nein nein HashMap nein ja Schlüssel nein, Werte ja TreeMap ja Schlüssel nein, Werte ja Schlüssel nein, Werte ja Programmiermethodik - Java Collections 43
19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
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)
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
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
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
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
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
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
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
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]...
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.
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
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
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
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
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
Java Collections Framework (JCF)
Algorithmen & Datenstrukturen Bachelor Medieninformatik Fachbereich DCSM FH Wiesbaden University of Applied Sciences Thomas Frenken [email protected] Inhaltsverzeichnis 1. Das Java Collections
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
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
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
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
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
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
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
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,
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
Programmieren 2 16 Java Collections und Generizität
Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke [email protected] 1 Faulheit professionell: Fertige Datenbehälter
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,
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.
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
Programmieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
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
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,
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
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:
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden
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
Programmiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
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
Programmiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
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
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
Das Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
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
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,
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
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
Enumerations und innere Klassen
Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung
Ü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
Datenstrukturen und Algorithmen. Vorlesung 5
Datenstrukturen und Algorithmen Vorlesung 5 Inhaltsverzeichnis Vorige Woche: Sortierte Listen Zyrkuläre Listen Verkettete Listen auf Arrays Heute betrachten wir: Skip Listen ADT Set ADT Map Iterator ADT
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
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
