> Datenstrukturen in Java (Teil 2)
|
|
- Nora Kolbe
- vor 6 Jahren
- Abrufe
Transkript
1 Datenstrukturen > Datenstrukturen in (Teil 2) Mark Egloff
2 Lernziel Heute Abend > Sie lernen verschieden Datenstrukturen und Ihre Bedeutung kennen z.b. Arrays, Listen, Bäume, Maps > Sie kennen die Unterschiede und wissen wann welche Datenstruktur vorteilhaft eingesetzt werden sollte > Sie können eigene Datenstrukturen erstellen, diese sortieren und entsprechend bearbeiten Mark Egloff
3 Datenstrukturen in (Teil 2) Übersicht Datenstrukturen > Arrays Mehrdimensionale Felder um Werte oder Objekte in einer festen Reihenfolge aufzunehmen. Die maximale Grösse ist festgelegt > Liste Die Liste ist eine Datenstruktur zur dynamischen Speicherung von beliebig vielen Objekten. Objekte werden dabei einer Reihe nach abgelegt > Maps (Hashtabellen) Maps sind Indexstrukturen (oder Assoziativspeicher), die die Elemente anhand eines Indexes oder Schlüssels verwalten > Bäume ( nächsten Abend ) Mehrere Elemente können auf andere Elmente verweisen. So entstehen Verknüpfungen und es können Bäume realisiert werden Mark Egloff
4 Datenstrukturen in (Teil 2) Collections - Dynamische Datenstrukturen (1/2) > Bis jetzt haben wir Arrays kennen gelernt, die eine fixe Grösse haben. Nun möchten wir uns mehr mit dynamischen Datenstrukturen befassen. > Dynamische Datenstrukturen passen ihre Größe der Anzahl der Daten an, die sie aufnehmen. Dynamische Strukturen haben aber den Nachteil, dass zur Laufzeit Speicher angefordert und verwaltet werden muss, wenn Daten eingefügt werden. > Dieses Problem wurde mittlerweile von der Informatik erkannt, und der Trend geht wieder hin zu festen, nicht dynamischen Datenstrukturen vorwiegend Arrays, natürlich nur dort, wo dies auch möglich ist. > Eine der grössten Neuerungen, die die -2-Plattform eingeführt hat, ist die so genannte Collection-API. Ein Container als Objekt, welches wiederum Objekte aufnimmt und die Verwaltung der Elemente übernimmt. Mark Egloff
5 Datenstrukturen in (Teil 2) Collections - Dynamische Datenstrukturen (2/2) > In findet man alle Arten von dynamischen Datenstrukturen im Package java.util. Dort ist das Collection-API untergebracht. > Als zentrale Basis des API s dienen die Interfaces java.util.collection und java.util.map > Es existiert eine Hilfsklasse java.util.collections ähnlich wie bei den Arrays, die noch zusätzliche Unterstützungen anbietet ablegen holen Objekte Collection Mark Egloff
6 Datenstrukturen in (Teil 2) Das Basis- Interface java.util.collection (1/3) > Collection bildet die generelle Basis, die fast alle Datenstrukturen implementiert (bis auf die Assoziativspeicher: Arrays und Maps) > Listen sowie Set s basieren auf diesem einfachem Interface. Durch die Schnittstelle Collection erhalten alle Klassen einen gemeinsamen, äusseren Rahmen > Dadurch lassen sich Implementationen und ihre Algorithmen einfach austauschen um die jeweiligen Anforderungen abzudecken > Das Interface bietet Grund-Operationen für z.b. für Elemente hinzufügen, löschen, selektieren und finden Mark Egloff
7 Datenstrukturen in (Teil 2) Das Basis- Interface java.util.collection (2/4) <<interface>> Collection <<interface>> Set <<interface>> List <<interface>> SortedSet ArrayList LinkedList Vector HashSet LinkedHashSet TreeSet Stack Mark Egloff
8 Datenstrukturen in (Teil 2) Das Basis- Interface java.util.collection (3/4) z.b. Nutzung des Interfaces Collection mit versch. Implementationen import java.util.*;... Collection col = new LinkedList(); col.add("head"); col.add("first"); col.add(""); for(iterator it = col.iterator(); it.hasnext(); ) System.out.print( it.next() + " "); Ausgabe: Head first dieselbe Reihenfolge wie eingefügt Mark Egloff
9 Datenstrukturen in (Teil 2) Das Basis- Interface java.util.collection (4/4) z.b. Nutzung des Interfaces Collection mit versch. Implementationen import java.util.*;... Collection col = new TreeSet(); col.add("head"); col.add("first"); col.add(""); Einfacher Austausch der Implementation, Rest bleibt gleich, jedoch anderes Verhalten for(iterator it = col.iterator(); it.hasnext(); ) System.out.print( it.next() + " "); Ausgabe: Head first sortierte Reihenfolge Mark Egloff
10 Datenstrukturen in (Teil 2) Auswahl der richtigen Collection- Klasse Zugriff ohne Schlüssel? Zugriff über Schlüssel keine Dupplikate? Duplikate erlaubt << Map >> << Set >> << List >> Opt. Zugriff? Sortiertes Iterieren Opt. Zugriff? Einfügen nur am Kopf threadsafe Opt. Zugriff?? single thread Sortiertes Iterieren HashSet TreeSet LinkedList HashTable HashMap TreeMap singlethread? threadsafe ArrayList Vector Stack Mark Egloff
11 Datenstrukturen in (Teil 2) > Listen in Mark Egloff
12 Datenstrukturen in (Teil 2) Listen > Die Liste ist eine Datenstruktur zur dynamischen Speicherung von beliebig vielen Objekten. > Dabei beinhaltet jedes Listenelement als Besonderheit einen Verweis auf das nächste Element, wodurch die Gesamtheit der Objekte zu einer Verkettung von Objekten wird. Listen sind somit stets linear. Mark Egloff
13 Datenstrukturen in (Teil 2) Listen Vorteile/Nachteile gegenüber Arrays > Vorteil: Listen können beliebige Anzahl von Objekten aufnehmen bzw. verknüpfen. Sie müssen nicht auf eine bestimmte Grösse initialisiert werden. Neue Objekte können einfach am Ende angehängt werden. Speicher wird effizienter genutzt, keine leere, vorreservierte Plätze Beliebige Grösse > Nachteil: Es ist nur möglich vom einen zum nächsten Objekt in der Liste zu navigieren. Suchen nach Objekten ist aufwendig Einfügen /Entfernen von Objekten mitten in der Liste benötigt zusätzliche Logik um die Objekte wieder miteinander zu Verknüpfen. nur sequentieller Zugriff, macht es langsam zusätzlicher Verwaltungsaufwand Overhead um ein Objekt zu speichern, benötigt zusätzlicher Speicher Mark Egloff
14 Datenstrukturen in (Teil 2) Listen Beispiel einer einfachen Liste (1/2) > Der folgende einfache Code zeigt wie ein Listenelement abgebildet werden könnte. Natürlich müssen Listen in nicht selber implementiert werden 1 DATA next 2 DATA next 3 DATA null Listenelement 1 Listenelement 2 Listenelement 3 class ListenElement { int index; Object data; ListenElement next } ListenElement index data next next Mark Egloff
15 Datenstrukturen in (Teil 2) Listen Beispiel einer einfachen Liste (2/2) ListenElment l1 = new ListenElement(1, "Alpha"); ListenElment l2 = new ListenElement(2, "Beta"); ListenElment l3 = new ListenElement(3, "Gamma"); l1.next = l2; l2.next = l3; 1 Alpha next 2 Beta next 3 Gamma null Listenelement 1 Listenelement 2 Listenelement 3 Mark Egloff
16 Datenstrukturen in (Teil 2) Listen Übersicht verschiedener Implementationen > java.util.arraylist Liste auf der Basis eines Arrays. Der interne Array wird bei Bedarf automatisch vergrössert. Ist nicht threadsafe. > java.util.linkedlist Bildet eine verknüpfte Liste (ohne Array). Ist nicht threadsafe. > java.util.vector Liste auf der Basis eines Arrays. Der interne Array wird bei Bedarf automatisch vergrössert. Ist threadsafe. > java.util.stack Basiert auf Vector, bildet eine last-in-first-out (LIFO) Liste. Ist threadsafe. Mark Egloff
17 Datenstrukturen in (Teil 2) Listen Übersicht verschiedener Implementationen interface Collection interface List AbstractList Cloneable java.io.serializable ArrayList AbstractSequentialList Cloneable java.io.serializable LinkedList AbstractList Cloneable java.io.serializable Vector Stack Mark Egloff
18 Datenstrukturen in (Teil 2) Listen Auszug aus dem Interface java.util.list Collection interf ace List +size:int +contains:boolean +iterator:iterator +toarray:object[] +toarray:object[] +add:boolean +remove:boolean +containsall:boolean +addall:boolean +addall:boolean +removeall:boolean +retainall:boolean +clear:void +equals:boolean +hashcode:int +get:object +set:object +add:void +remove:object +indexof:int +lastindexof:int +listiterator:listiterator +listiterator:listiterator +sublist:list public interface List extends Collection { int size(); boolean add(object o); void add(int index, Object o); boolean remove(object o); Object remove(int index); Object get(int index); boolean set(int index); boolean removeall(collection c); void clear(); Iterator iterator();... } Der spezieller Unterschied gegenüber Collection ist, dass man über einen Index auf die Elemente zugreifen kann Mark Egloff
19 Datenstrukturen in (Teil 2) Listen Beispiel Vector import java.util.*; class Run { public static void main(string[] args) { List l = new Vector(); Kreis k = new Kreis(2.5f); l.add(k); k = (Kreis) l.get(0); Instanzierung Hinzufügen Lesen } k = (Kreis) l.get(1); // Laufzeitfehler } // IndexOutOfBoundsExcpetion Mark Egloff
20 Datenstrukturen in (Teil 2) Listen Beispiel Stack import java.util.*; class Run { public static void main(string[] args) { Stack s = new Stack(); } } s.push("head"); s.push("first"); s.push(""); System.out.println( s.pop() ); System.out.println( s.pop() ); // // first Mark Egloff
21 Datenstrukturen in (Teil 2) Listen Performance verschiedener Implementationen Class Elemente Add Iterate Remove LinkedList ms 3.06 ms 0.07 ms ms ms 8.2 ms ArrayList ms 5.24 ms 0.71 ms Vector (threadsafe) ms ms ms ms 5.49 ms 0.71 ms ms ms ms Nach 10 Durchläufen mit JRE 1.5, 2GHz Pentium M, 1GB RAM Die Wahl der richtigen Listen - Implementation ist entscheidend für die Performance Gewisse Listen lassen ein Fine-Tuning zu, um das Resizing-Verhalten zu optimieren (initialcapacity, capacityincrement) Mark Egloff
22 Datenstrukturen in (Teil 2) Listen Performance verschiedener Implementationen Mark Egloff
23 Datenstrukturen in (Teil 2) Listen Performance verschiedener Implementationen Mark Egloff
24 Datenstrukturen in (Teil 2) > Set s in Mark Egloff
25 Datenstrukturen in (Teil 2) Set s > Sets oder auch Mengen genannt sind eine spezielle Form von Listen, welche das gleiche Element nur einmal aufnehmen. Diese Art von Strukturen eignen sich bestens um eindeutige Werte aufzunehmen > Set s sind im allgemeinen langsamer als Listen, da sie zusätzlich eine Logik besitzen um die Eindeutigkeit sicherzustellen. Man unterscheidet zwischen geordneten (sortierten) sowie ungeordneten Set s > In bildet die Basis das Interface java.util.set bzw. java.util.sortedset ablegen Objekt holen equals() equals() equals() equals() equals() Mark Egloff
26 Datenstrukturen in (Teil 2) Set s Übersicht verschiedener Implementationen > java.util.hashset Schnelle Implementierung durch Hashing-Verfahren (HashMap). Ist nichtthreadsafe > java.util.treeset Mittels Binärbäume realisiert, die eine Sortierung ermöglichen. Ist nichtthreadsafe > java.util.linkedhashset Schnelle Mengenimplementierung unter Beibehaltung der Einfügereihenfolge. Ist nicht- threadsafe > java.util.enumset (seit 1.5). Eine spezielle Menge ausschließlich für Enum-Objekte. Ist nicht- threadsafe > java.util.concurrent.copyonwritearrayset (seit 1.5) Schnelle Datenstruktur eignet sich für viele lesende Zugriffe Ist threadsafe Mark Egloff
27 Datenstrukturen in (Teil 2) Set s Übersicht verschiedener Implementationen interf ace java.util.collectio Collection interf ace java.util.set interf ace java.util.sortedse Cloneable java.io.serializable j av a.util.treese Cloneable java.io.serializable j av a.util.hashse AbstractCollection java.util.abstractse Mark Egloff
28 Datenstrukturen in (Teil 2) Set s Auszug aus dem Interface java.util.set Collection interf ace java.util.set +size:int +contains:boolean +iterator:iterator +toarray:object[] +toarray:object[] +add:boolean +remove:boolean +containsall:boolean +addall:boolean +retainall:boolean +removeall:boolean +clear:void +equals:boolean +hashcode:int public interface Set extends Collection { int size(); boolean add(object o); boolean remove(object o); boolean removeall(collection c); void clear(); Iterator iterator(); // Enumeration... } Mark Egloff
29 Datenstrukturen in (Teil 2) Set s Beispiel mit HashSet import java.util.*; public class Run { public static void main(string args[]) { Set set = new HashSet(); set.add("bernadine"); set.add("elizabeth"); set.add("gene"); set.add("elizabeth"); Instanzierung Hinzufügen (Elizabeth 2x) } } System.out.println( set ) Ausgabe: [Gene, Bernadine, Elizabeth] unsortierte, zufällige Reihenfolge Mark Egloff
30 Datenstrukturen in (Teil 2) Set s Beispiel mit TreeSet import java.util.*; public class Run { public static void main(string args[]) { Set set = new TreeSet(); set.add("bernadine"); set.add("elizabeth"); set.add("gene"); set.add("elizabeth"); Instanzierung Hinzufügen (Elizabeth 2x) } } System.out.println( set ) Ausgabe: [Bernadine, Elizabeth, Gene] sortierte Reihenfolge Mark Egloff
31 Datenstrukturen in (Teil 2) Set s Funktionsweise von HashSet & TreeSet > java.util.hashset HashSet verwendet intern die java.util.hashmap. Es wird beim Einfügen vom jeweiligen Objekt ein eindeutiger Wert (Identifikationsnummer, Hash) berechnet. Hierzu wird vom Objekt die Methode hashcode() aufgerufen (vererbt von java.lang.object ). Diese muss für eigene Objekte überschrieben werden. > java.util.treeset Verwendet intern für die Sortierung das Interface java.lang.comparable. Das jeweilige Objekt muss dieses Interface unterstützen, ansonsten wird eine ClassCastException ausgelöst. Bei Objekten eigener Klassen muss dieses Interface implementiert werden. Mark Egloff
32 Datenstrukturen in (Teil 2) > Iteratoren in Mark Egloff
33 Datenstrukturen in (Teil 2) Iteration - Mit einem Iterator durch die Daten wandern > Um über generische und dynamische Datenstrukturen zu wandern wurde in der Informatik ein spezielles Design geschaffen das Iterator -Pattern. > Der Iterator (oder Cursor ) ist dabei ein Zeiger, mit dem über die Elemente einer Liste bzw. durch die Elemente iteriert werden kann. > Er verweist nur auf das aktuelle Objekt in einer Collection und kann mit entsprechenden Operationen auf das nächste Objekt verschoben werden Iterator next() next() next() next() Collection Objekt Mark Egloff
34 Datenstrukturen in (Teil 2) Iteration - Mit einem Iterator durch die Daten wandern > Das Iterator -Pattern erlaubt uns über eine beliebige Datenstruktur zu iterieren ohne die genaue Implementation zu kennen > Unsere Applikation bedient sich dabei nur einem zentralen Interface Iterator << Interface>> Collection creates << Interface>> Iterator use MyApp iterator() hasnext() next() main() creates ArrayList has ArrayListIterator Iterator Pattern Mark Egloff
35 Datenstrukturen in (Teil 2) Iteration - Mit einem Iterator durch die Daten wandern > Für Iteratoren definiert die -Bibliothek zwei unterschiedliche Schnittstellen. Das hat historische Gründe. > Die Schnittstelle java.util.enumeration gibt es seit den ersten -Tagen; die Schnittstelle java.util.iterator gibt es seit 1.2 (seit der Collection-API). Der Typ Iterator sollte in der Regel verwendet werden. > Beide Schnittstellen funktionieren nach dem demselben Prinzip. Sie besitzen eine Funktion, die jeweils das nächste Element erfragt z.b. next() und eine Funktion, die ermittelt, ob es überhaupt ein nächstes Element gibt z.b. hasnext(). So wandert der Iterator Element für Element ab. Mark Egloff
36 Datenstrukturen in (Teil 2) Iteration Auszug aus den Iterator Interfaces: interf ace java.util.enume ration +hasmoreelement s:boolean +nextelement:object public interface Enumeration { boolean hasmoreelements(); Object nextelement(); } interf ace java.util.iterator +hasnext:boolean +next:object +remove:void public interface Iterator { boolean hasnext(); Object next(); void remove(); } Der spezieller Unterschied ist hier, dass Iterator noch die Möglichkeit bietet während der Iteration ein Element aus der Liste zu entfernen Mark Egloff
37 Datenstrukturen in (Teil 2) Iteration - Mit einem Iterator durch die Daten wandern z.b. Iteration mittels dem Interface java.util.iterator import java.util.*;... Collection col = new LinkedList(); col.add("head"); col.add(...);...; // Iteration Iterator it = col.iterator(); while( it.hasnext() ) { } String s = (String) it.next(); // Casting von Object auf String Da next() ein java.lang.object zurückliefert muss entsprechend gecastet werden. Achtung wegen ClassCastException Mark Egloff
38 Datenstrukturen in (Teil 2) Iteration - Mit einem Iterator durch die Daten wandern > Seit 1.5 gibt es eine kürzere Version der for -Schleife um über eine Collection oder Array zu iterieren // herkömmliche Iteration for (Iterator it = col.iterator(); it.hasnext(); ) { } String s = (String) it.next(); // seit 1.5 for (Object o : col ) { } String s = (String) o; Achtung wegen ClassCastException. Die Collection col kann ja alles mögliche an Objekten beinhalten Mark Egloff
39 Datenstrukturen in (Teil 2) Iteration Collection während der Iteration bearbeiten Während einer Iteration ist es untersagt die Collection zu verändern z.b. Elemente hinzuzufügen oder zu entfernen. Wer es trotzdem tut erhält eine ConcurrentModificationException. for (Iterator it = col.iterator(); it.hasnext(); ) { String s = (String) it.next(); if (... ) col.remove( s ))...; Laufzeitfehler! } > Das Interface Iterator bietet eine Methode remove() an um während der Iteration gleich das aktuelle Elemente zu entfernen for (Iterator it = col.iterator(); it.hasnext(); ) { String s = (String) it.next(); if (... ) it.remove() )...; richtig!! } Mark Egloff
40 Datenstrukturen in (Teil 2) Generische Datentypen in der Collection-API (1/5) > Ein grosses Problem bei der Handhabung von Collections ist, dass sie prinzipiell offen für jeden Typ sind, da sie Objekte vom allgemeinsten Typ java.lang.object beim Speichern entgegennehmen und diesen auch als Rückgabe liefern. Problem: Objekte gehen als Ihre Datentypen (Fussball, Fisch, Gitarre, Auto) rein und kommen aber als generisches Objekt wieder raus Casting ist notwendig! Mark Egloff
41 Datenstrukturen in (Teil 2) Generische Datentypen in der Collection-API (2/5) > Falsches Casting bzw. das Auftreten von ClassCastException zur Laufzeit ist daher keine Seltenheit. z.b. falsches Casting bei einer Collection mit gemixten Datentypen Collection col = new ArrayList(); col.add( "Text " ); col.add( new Integer(123) ); // mixed types for (Iterator it = col.iterator(); it.hasnext(); ) { String s = (String) it.next(); // Laufzeitfehler } beim 2. Element Mark Egloff
42 Datenstrukturen in (Teil 2) Generische Datentypen in der Collection-API (3/5) > Um diese Handhabung zu vereinfachen und um ClassCastExceptions zu vermeiden, wurde seit 1.5 eine Möglichkeit geschaffen um den genauen Typ anzugeben Kompromisslösung mittels Generics : Es wird eine Collection für einen Typ (z.b. Fisch) geschaffen. Alle gehen als Fische rein und kommen auch wieder als Fische raus Mark Egloff
43 Datenstrukturen in (Teil 2) Generische Datentypen in der Collection-API (4/5) > Bei der Instanzierung muss die Klasse der Elemente angegeben werden. Diese Typangabe erfolgt mit <ClassName> jeweils nach dem Klassennamen der Collection > Der Syntax ähnelt dem Prinzip der Templates in C++. z.b. Typisierte Collection ab 1.5 Collection<String> col = new ArrayList<String>(); col.add( "Text " ); col.add( new Integer(123) ); // Compilerfehler, nur String erlaubt Mark Egloff
44 Datenstrukturen in (Teil 2) Generische Datentypen in der Collection-API (5/5) > Bei diesen typisierten Collections muss dann später nicht mehr gecastet werden. z.b. Typisierte Collection ab 1.5 List<String> col = new ArrayList<String>(); col.add( "Head" ); col.add( "first" ); col.add( "" ); // kein Casting mehr notwendig: String first = col.get(1); for (String s : col ) { System.out.println(s); } // get() gibt nun direkt String zurück // direkter String-Iterator Mark Egloff
45 Datenstrukturen in (Teil 2) > Maps in Mark Egloff
46 Datenstrukturen in (Teil 2) Maps > Eine Map ist ein Assoziativspeicher, der Objekte unter Verwendung einer Zuordnung (Index) verwaltet. > Eine Map sind wie Postfächer anzusehen. Sie speichern die Objekte anhand eines zusätzlichen Schlüssels (Key) ab, welcher als Index dient. Dieser Schlüssel ist natürlich wiederum ein Objekt. Key Key Daten ablegen holen Daten Map Mark Egloff
47 Datenstrukturen in (Teil 2) Map s in > In bildet das Interface java.util.map die Basis für alle Maps. Sie ist nicht kompatibel zum Interface java.util.collection > Die Collection-API bietet wie bei den Set s entsprechend eine sortierte und unsortierte implementationen an. Übersicht verschiedener Implementationen > java.util.hashmap Schnelle Implementierung durch Hashing-Verfahren. Ist nicht- threadsafe > java.util.hashtable Schnelle Implementierung durch Hashing-Verfahren. Ist threadsafe > java.util.treemap Besitzt ein langsamerer Zugriff, doch dafür sind alle Schlüssel sortiert. Sie sortiert die Schlüssel in einen Binärbaum ein. Ist nicht- threadsafe Mark Egloff
48 Datenstrukturen in (Teil 2) Map s Übersicht verschiedener Implementationen interf ace Map Dictionary Cloneable java.io.serializable Hashtable AbstractMap Map Cloneable java.io.serializable HashMap AbstractMap AbstractMap SortedMap Cloneable java.io.serializable TreeMap empty:boolean Mark Egloff
49 Datenstrukturen in (Teil 2) Map s Auszug aus dem Interface java.util.map interf ace Map +size:int +containskey:boolean +containsvalue:boolean +get:object +put:object +remove:object +putall:void +clear:void +keyset:set +values:collection +entryset:set +equals:boolean +hashcode:int public interface Map { int size(); boolean containskey(object key); boolean containsvalue(object value); Object put(object key, Object value); Object get(object key); Object remove(object key); void clear();... } Mark Egloff
50 Datenstrukturen in (Teil 2) Map s Beispiel mit HashMap, Standard Schlüssel (1/2) public class Kunde { public int kndnnummer; public String vorname; public String nachname; } public Kunde( int kndnummer, String vorname, String nachname) { this.kndnummer = kndnummer; this.vorname = vorname; this.nachname = nachname; } Mark Egloff
51 Datenstrukturen in (Teil 2) Map s Beispiel mit HashMap, Standard Schlüssel (2/2) import java.util.*; public class Run { public static void main(string args[]) { Map map = new HashMap(); map.put( new Integer(112), new Kunde(112, "Hans", "Müller")); map.put( new Integer(113), new Kunde(113, "Max", "Moritz")); } } Kunde k1 = (Kunde) map.get( new Integer(112) ); Kunde k2 = (Kunde) map.get( new Integer(113) ); Als Schlüssel muss ein Objekt bzw. Klasse verwendet werden, welche eine Implementation der hashcode() Methode besitzt Mark Egloff
52 Datenstrukturen in (Teil 2) Map s Beispiel mit HashMap, Ieration (1/2) z.b. Iteration durch eine Map, durch alle Schlüssel und alle Elemente // herkömmliche Iteration Iterator it = map.keyset().iterator(); while( it.hasnext() ) { Object key = it.next(); Kunde k = ( Kunde ) map.get( key ); } System.out.println( k ); // unsortierte Ausgabe // ab 1.5 mit erweiterter for- Schleife for ( Object key : map.keyset() ) { Kunde k = ( Kunde ) map.get( key ); } System.out.println( k ); // unsortierte Ausgabe Mark Egloff
53 Datenstrukturen in (Teil 2) Map s Beispiel mit HashMap, Iteration (2/2) // ab 1.5 mit der Benützung von <Generics> vereinfacht sich die Iteration HashMap<Integer,Kunde> map = new HashMap<Integer,Kunde>(); map.put( new Integer(112), new Kunde(112, "Hans", "Müller"));... for ( Integer key : map.keyset() ) { // kein Casting notwendig } z.b. Iteration durch eine Map, durch alle Schlüssel und alle Elemente Kunde k = map.get( key ); System.out.println( k ); Der Einsatz von <Generics> ist nur möglich falls die Typen für die Schlüssel sowie für die Datenelemente immer gleich sind Mark Egloff
54 Datenstrukturen in (Teil 2) Map s Beispiel mit TreeMap (1/2) import java.util.*; public class Run { public static void main(string args[]) { Map map = new TreeMap(); map.put( new Integer(112), new Kunde(112, "Hans", "Müller")); map.put( new Integer(113), new Kunde(113, "Max", "Moritz")); Einfacher Austausch der Implementation. } } Kunde k1 = (Kunde) map.get( new Integer(112) ); Kunde k2 = (Kunde) map.get( new Integer(113) ); Als Schlüssel muss ein Objekt bzw. Klasse verwendet werden, welche das Interface java.lang.comparable implementiert Mark Egloff
55 Datenstrukturen in (Teil 2) Map s Beispiel mit TreeMap (2/2) // herkömmliche Iteration Iterator it = map.keyset().iterator(); while( it.hasnext() ) { Object key = it.next(); Kunde k = ( Kunde ) map.get( key ); } z.b. Iteration durch eine Map, durch alle Schlüssel und alle Elemente System.out.println( k ); // sortierte Ausgabe Da map hier eine SortedMap ist, erfolgt die Iteration durch die Schlüssel sortiert Mark Egloff
56 Datenstrukturen in (Teil 2) Map s Funktionsweise von HashMap & TreeMap > java.util.hashmap Es wird beim Einfügen vom jeweiligen Key-Objekt ein eindeutiger Wert (Identifikationsnummer, Hash) berechnet. Hierzu wird vom Key die Methode hashcode() aufgerufen (vererbt von java.lang.object ). Diese muss für eigene Key-Klassen überschrieben werden. > java.util.treemap Verwendet intern für die Sortierung das Interface java.lang.comparable. Das jeweilige Key-Objekt muss dieses Interface unterstützen, ansonsten wird eine ClassCastException ausgelöst. Bei eigenen Keys muss dieses Interface implementiert werden. Mark Egloff
57 Datenstrukturen in (Teil 2) > Hilfsklasse Collections Mark Egloff
58 Datenstrukturen in (Teil 2) Hilfsklasse java.util.collections > Ähnlich wie bei den Arrays (java.util.arrays) existiert auch für die Collections und Maps eine Hilfsklasse mit nützlichen statischen Funktionen: java.util.collections > Die Klasse bietet bekannte Dinge wie binäre Suche, Ermittlung des min/max Elementes, Sortierung sowie Generierung von Zufallsreihenfolgen an. Eine wesentliche weitere Funktionalität sind die Factory - Methoden um threadsafe oder immutable Collections zu erzeugen. z.b. Erzeugung einer threadsafe - Liste mittels Collections Collection c = new ArrayList(); // ArrayList ist nicht threadsafe... Collection sc = Collections.synchronizedCollection(c); sc.add( "Text " ); Mark Egloff
59 Datenstrukturen in (Teil 2) > Handhabungen von Collections Mark Egloff
60 Datenstrukturen in (Teil 2) Collections sind Objekte > Collections sind normale Objekte, es gelten somit die gleichen bzw. ähnliche Gesetze, wie wir schon kennen gelernt haben. > Alle Implementationen von java.util.collection sowie java.util.map stammen automatisch von java.lang.object ab. > All diese Container besitzen somit eine equals() sowie eine clone() Methode. Doch wie wir schon bei den Arrays gesehen haben, müssen wir die Details hierzu anschauen z.b. Vergleich von 2 Collections Collection c1 = new ArrayList();... Collection c2 = new ArrayList(); if ( c1.equals(c2) ) geht das?? Was passiert hier genau? Mark Egloff
61 Datenstrukturen in (Teil 2) Vergleichen von Collections (1/2) > Beide Interfaces java.util.collection sowie java.util.map bieten die Methode equals() an. > Die Implementation dieser Methode befindet sich bei der jeweiligen Implementations-Klasse des Interfaces (z.b. java.util.arraylist ). Deshalb lohnt es sich jeweils ein Blick in die Doc der jeweiligen Klasse zu werfen > Die Klassen im API verhalten sich nach den folgenden Regeln. Eine Collection ist gleich wenn 1. sie von derselben Klassen-Familie sind z.b. (List!= Set) 2. sie die gleiche Anzahl an Elementen in gleicher Reihenfolge aufweisen 3. Im Falle von Map die Elemente gleich indexiert sind 4. die jeweiligen Element mit a1.equals(b1)== true ergeben Mark Egloff
62 Datenstrukturen in (Teil 2) Vergleichen von Collections (2/2) z.b. Anwendung der equals() Methode bei gleichen Klasse Collection c1 = new ArrayList(); Collection c2 = new LinkedList();... if (c1.equals(c2))... // funktioniert richtig Bei Elementen eigener Klassen muss die equals() Methode implementiert sein z.b. Anwendung der equals() Methode bei unterschiedlicher Klasse Collection c1 = new ArrayList(); Collection c2 = new HashSet();... if (c1.equals(c2))... // immer false ja nie machen! Mark Egloff
63 Datenstrukturen in (Teil 2) Elemente in Collections prüfen mit contains() > Die Collection Klassen bieten eine Methode an, die überprüft ob sich ein gleiches Element schon in der Collection befindet: contains() > Bei Map existieren entsprechend 2 containsxxx() Methoden. Einmal für die Schlüssel containskey() und einmal für die Elemente selber containsvalue() > Diese Methode ruft intern von jedem Element die equals() Methode auf. Bei Elementen eigener Klassen muss deshalb die equals() Methode implementiert sein z.b. Anwendung der contains() Methode Collection c = new ArrayList();... if (c.contains( "DATA" ))... Mark Egloff
64 Datenstrukturen in (Teil 2) Klonen von Collections > Um eine Collection zu klonen müssen wir die clone() Methode von der jeweiligen Implementations-Klasse aufrufen. Die Interfaces Collection oder Map kennen das clone() selber nicht. > Die clone() Methode selber kopiert nur den Container (die Hülle). Die Elemente selber werden nicht kopiert (Shallow Copy oder Flache Kopie). Es verhält sich somit gleich wie bei den Arrays. > Ein deep - Copy existiert nicht in, man müsste selber eine entsprechende Hilfs-Methode schreiben z.b. Anwendung der clone() Methode ArrayList al = new ArrayList();... Collection c = (Collection) al.clone(); Mark Egloff
65 Datenstrukturen in (Teil 2) Collections und Arrays > Manchmal muss man zwischen Arrays und Collections wechseln. Hierzu werden von den Klassen entsprechende Methoden angeboten > Das Interface java.util.collection bietet die Methode toarray() an um die Collection in ein Array zu überführen > java.util.arrays bietet eine Hilfsmethode um einen Array in eine Liste zu wandeln Arrays.asList() z.b. Collection in Array wandeln und wieder zurück Collection c = new ArrayList(); c.add( "" );... String[] sarray = (String[]) c.toarray( new String[]{} ); c = Arrays.asList(sArray); Mark Egloff
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)
MehrOCP 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
MehrJava 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
Mehr12 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
MehrJava 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]...
Mehr4.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
MehrProgrammiertechnik 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,
MehrProgrammierkurs 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
MehrProgrammierkurs 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
MehrTeil 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
Mehrjava.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
MehrProblem: 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
MehrWo 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,
MehrGrundkonzepte 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.
MehrInfo 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
MehrNü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
MehrEinstieg 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
MehrEinfü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
MehrCollections. 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
MehrEinfü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
MehrKapitel 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
MehrProgrammieren 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
MehrAbstrakte 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
MehrADT: 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,
MehrObjektorientierte Implementierung
Objektorientierte Implementierung 10) Verfeinern von Assoziationen mit dem Java-2 Collection Framework Softwaretechnologie, Prof. Uwe Aßmann, Prof. Heinrich Hussmann 1 Objektorientierte Implementierung
MehrVorlesung 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
MehrSchein-/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
MehrProgrammieren 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
MehrKapitel 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
MehrLineare 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
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Was gefällt Ihnen? Sehr ausführliches Skript Fragen / Aufgaben in der Vorlesung Praktische Beispiele Tolle Aufgabenblätter
MehrC# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue
C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte
MehrProgrammierkurs 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
MehrÜ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
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList
MehrJava 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
MehrProgrammieren 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
MehrGrundlagen 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
MehrProgrammieren 2 Übung Semesterwoche 2
Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf
MehrAlgorithmen 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Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
MehrVom objektorientierten Entwurf zur Implementierung in Java. 2. Dezember 2014
Vom objektorientierten Entwurf zur Implementierung in Java 2. Dezember 2014 Überblick Verwendung von Frameworks und Bibliotheken Was enthält die Java Standard Edition? Implementieren mit dem Java Collections
MehrProgrammieren II. Datenstrukturen / Das Collection-Framework. Heusch 14 Ratz Institut für Angewandte Informatik
Programmieren II Datenstrukturen / Das Collection-Framework Heusch 14 Ratz 12.7 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Datenstrukturen (1) Datenstrukturen dienen dazu,
MehrProgrammieren II. Datenstrukturen / Das Collection-Framework. Heusch 14 Ratz Institut für Angewandte Informatik
Programmieren II Datenstrukturen / Das Collection-Framework Heusch 14 Ratz 12.7 www.kit.edu Datenstrukturen (1) Datenstrukturen sind strukturierte Sammlungen von Daten die dazu dienen, Informationen im
MehrProgrammieren 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
MehrProgrammieren 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
MehrALP 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
MehrProgrammieren 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
MehrALP 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
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Mehrequals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrProgrammieren II. Hierarchie von Collections. Vorlesung 3. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010
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
MehrJavakurs 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
Mehrpublic interface Stack<E> { public void push(e e); public E pop();
ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für
MehrJava Generics & Collections
Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
MehrVorlesung Programmieren
Vorlesung Programmieren 12 Java API Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Klassenbibliothek Kollektionen Anforderungen der Kollektionen an ihre Elemente Iteratoren Seite 1 Klassenbibliothek Seite 2 Java
MehrHeute. 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
MehrGrundkurs Informatik. Viele Schränke bilden eine Schrankwand
Viele Schränke bilden eine Schrankwand Das einfache Projekt Schrankwand könnte so erweitert werden, dass die Schrankwand eine beliebige Zahl von Schränken enthalten kann. In diesem Fall brauchen wir statt
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Mehr12 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,
MehrCollections. 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
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) ArrayList 0 1 2 Obj0 Obj1 size() - 1 15.12.2014 CuP - VO 2 Auer 1 ArrayList import java.util.arraylist; ArrayList buchliste; buchliste = new ArrayList();
MehrKapitel 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,
MehrVorlesung Inf-B
Vorlesung Inf-B stehn@mi.fu-berlin.de Quelle Diese Folien basieren auf dem Java-Tutorial Generics von Gilad Bracha http://java.sun.com/docs/books/tutorial/extra/generics/ 2 Motivierendes Beispiel List
MehrGrundlagen der Informatik 0
Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg
MehrTeil VII. Hashverfahren
Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrInstitut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 6 Prof. R. Westermann, A. Lehmann, R.
Mehr1 Hashing und die Klasse String
1 Hashing und die Klasse String Die Klasse String stellt Wörter von (Unicode-) Zeichen dar. Objekte dieser Klasse sind stets konstant, d.h. können nicht verändert werden (immutable). Die Zeichenkette ist
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrVorlesung Programmieren
Vorlesung Programmieren 15 Java API Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 08: Dynamische Arrays Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Arrays anpassen Übungsaufgabe von letzter Stunde Array-Elemente Einfügen
Mehr6. Interfaces Grundlagen der Programmierung 1 (Java)
6. Interfaces Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 22. November 2005 Einordnung im Kontext der Vorlesung
MehrRückblick: Inf A - Algorithmen. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 07: Collections 1. Inhalt.
Universität Osnabrück 1 Rückblick: Inf A - Algorithmen 3 - Objektorientierte Programmierung in Java Vorlesung 07: Collections 1 SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Abstrakte Datentypen Liste
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
MehrVerkettete Datenstrukturen: Listen
Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).
MehrVorlesung 09: Mengen. Peter Thiemann SS 2010
Vorlesung 09: Mengen Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 43 Inhalt Mengen HashSet LinkedHashSet CopyOnWriteArraySet EnumSet SortedSet NavigableSet
MehrAlgorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrWie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?
Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Abstrakte Datentypen: Maps Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 48 Abstrakte Datentypen:
MehrDatenstrukturen in Java
Datenstrukturen in Java SEP 350 Datenstrukturen Datenstrukturen ermöglichen Verwaltung von / Zugriff auf Daten (hier: Objekte) Datenstrukturen unterscheiden sich duch Funktionalität Implementierung modulares
MehrAufgabe 1 (Programmanalyse, Punkte)
2 Aufgabe 1 (Programmanalyse, 8 + 6 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Schreiben Sie hierzu jeweils die ausgegebenen Zeichen hinter den Kommentar OUT:. public class
MehrObjektorientierte 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
MehrAllgemeine Informatik II
Klausur zur Vorlesung Allgemeine Informatik II Prof. J. Fürnkranz Technische Universität Darmstadt Sommersemester 2009 (Klausur SS09) Termin: 3. 9. 2009 Name: Vorname: Matrikelnummer: Fachrichtung: Punkte:
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrOrganisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50
Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine
MehrOrganisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr
Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:
Mehr7. Kapitel COLLECTIONS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
7. Kapitel COLLECTIONS Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Übersicht 1 1. Programmstrukturierung mit Paketen (packages) 2. Vererbung 3. Abstrakte Klassen und Interfaces 4. Ausnahmebehandlung
MehrAlgorithmen und Datenstrukturen 11
5. Juli 2012 1 Besprechung Blatt 10 Fragen 2 Hashing Allgemein, Hashtablestruktur Sondierungsverfahren 3 Anonyme und innere Klassen Anonyme Klassen Innere Klassen 4 Zirkuläre Arrays 5 Vorbereitung Blatt
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 10: Mehr zu Arrays & Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Arrays und die Verwendung der ArrayList 2. Teil: Weitere Aspekte
MehrFelder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07 Übersicht 1 Was sind? 2 Vereinbarung von n 3 Erzeugen von n 4 Zugriff auf Feldkomponenten 5 Mehrdimensionale 6 als Objekte, Referenzen Kopieren
Mehr4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)
4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 8./15. November 2005 Einordnung
MehrSelbststudium OOP7 & ALG2 Auftrag
Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void
Mehr