Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut fur ¨ Angewandte und Numerische Mathematik
1 / 15
Gliederung
¨ 1 Uberblick Collections
2 Hierarchie von Collections
3 Verwendung von ArrayList
4 Verwendung von Iteratoren
2 / 15
Gliederung
¨ 1 Uberblick Collections
2 Hierarchie von Collections
3 Verwendung von ArrayList
4 Verwendung von Iteratoren
3 / 15
¨ Uberblick Collections Eine Collection ist eine Klasse, die mehrere gleichartige Elemente zusammenfasst. Viele solche Collection-Klassen sind im Java Collections Framework enthalten.
Unterschied zu Feldern • Flexiblere Moglichkeiten, ¨ viele Varianten • Veranderliche ¨ ¨ Lange • Etwas schwieriger zu programmieren
Unterschied zu selbst geschriebenen Klassen • Weniger eigener Aufwand • Einheitliche, standardisierte Klassen aus JDK • Collections Framework gut ausgetestet und effizient
4 / 15
Gliederung
¨ 1 Uberblick Collections
2 Hierarchie von Collections
3 Verwendung von ArrayList
4 Verwendung von Iteratoren
5 / 15
Hierarchie von Collections
Alle Collection-Interfaces und -Klassen basieren auf dem Interface Collection. Sie sind i.a. generisch mit dem Typparameter E fur ¨ die Elemente definiert, z.B. public i n t e r f a c e C o l l e c t i o n { ... } Ohne generische Typparameter wird als Elementtyp Object ¨ mit Programmen, die verwendet. Dies dient zur Kompatibilitat vor Java Version 5 geschrieben wurden.
6 / 15
Collections: Interfaces Beispiele fur ¨ Interfaces: • Collection: das grundlegende Interface zur
Zusammenfassung mehrerer gleichartiger Elemente • Set: Menge, jedes Element darf nur einmal vorkommen • List: geordnete Liste, Elemente durfen mehrfach ¨
vorkommen • Queue: Schlange zur Bearbeitung der Elemente, meistens
nach dem FIFO-Prinzip (first in, first out) • Map: bildet jeweils einen Schlussel (anstelle des Feldindex) ¨
auf ein Element ab; die Schlussel mussen eindeutig sein ¨ ¨ • SortedSet: geordnete Menge • SortedList: geordnete Liste
7 / 15
Collections: Klassen Beispiele fur ¨ Collection-Klassen: • ArrayList: Implementierung von List, ahnlich ¨ wie ein ¨ herkommliches Feld, Zugriff auf Elemente in konstanter Zeit O(1) • LinkedList: Implementierung von List, intern als doppelt verkettete Liste realisiert (zu jedem Element ist der Zugriff ¨ ¨ auf seinen Nachfolger und Vorganger moglich), Zugriff auf einzelne Elemente ist aufwendiger O(n) • HashSet: Implementierung von Set • HashMap: Implementierung von Map • LinkedList: Implementierung von Queue • und viele mehr Daruber hinaus gibt es noch Implementierungen fur ¨ ¨ spezielle Zwecke (Concurrent Implementierungen fur ¨ Mehrprozessorsysteme, Convenience-Implementierungen fur ¨ leere Menge, usw.) 8 / 15
Gliederung
¨ 1 Uberblick Collections
2 Hierarchie von Collections
3 Verwendung von ArrayList
4 Verwendung von Iteratoren
9 / 15
Verwendung von ArrayList Gemeinsame Zugriffsmethoden aller Collections: • boolean add (E element)
fugt ¨ das Element element zur Collection hinzu; das Ergebnis der Methode gibt an, ob dies erfolgreich war • void clear ()
¨ loscht alle Elemente • boolean contains (E element)
¨ pruft, ¨ ob die Collection das Element e enthalt • boolean remove (E element)
entfernt das Element element aus der Collection; das Ergebnis der Methode gibt an, ob dies erfolgreich war • int size ()
liefert die Anzahl der Elemente in der Collection
10 / 15
Verwendung von ArrayList Einige spezielle Zugriffsmethoden von ArrayList: • ArrayList () erzeugt eine leere neue ArrayList • void add (int index, E element) fugt ¨ das Element element an Position index ein • boolean isEmpty () pruft, ¨ ob die ArrayList leer ist • E remove (int index) entfernt das Element an Position index und liefert eine Referenz auf das entfernte Element zuruck ¨ • E get (int index) liefert eine Referenz auf das Element an Position index zuruck ¨ • E set (int index, E element) ersetzt das Element an Position index durch element; liefert als Ergebnis eine Referenz auf das ersetzte fruhere ¨ Element 11 / 15
Beispiel zu ArrayList / / l e e r e L i s t e von S t r i n g s erzeugen A r r a y L i s t l i s t e = new A r r a y L i s t ( ) ; / / einige l i s t e . add l i s t e . add l i s t e . add
S t r i n g s hinzufuegen ( ” Ada Lovelace ” ) ; ( ” Konrad Zuse ” ) ; ( ” Jimmy Wales ” ) ;
/ / t e s t e n ob d i e L i s t e l e e r i s t i f ( l i s t e . isEmpty ( ) ) System . o u t . p r i n t l n ( ” L i s t e i s t l e e r ! ” ) ; / / andernfalls Liste durchlaufen else f o r ( i n t i =0; i < l i s t e . s i z e ( ) ; i ++) System . o u t . p r i n t l n ( l i s t e . g e t ( i ) ) ; 12 / 15
Gliederung
¨ 1 Uberblick Collections
2 Hierarchie von Collections
3 Verwendung von ArrayList
4 Verwendung von Iteratoren
13 / 15
Verwendung von Iteratoren Zum Durchlaufen einer Collection wird oft ein Iterator“ ” eingesetzt. Der Iterator einer Collection kann mit der Methode Iterator iterator () beschafft werden. Iterator ist ein Interface, passend zur jeweiligen Collection-Klasse. Gemeinsame Methoden von Iteratoren: • E next ()
¨ liefert das nachste Element vom Typ E in der Collection • boolean hasNext ()
gibt an, ob noch weitere Elemente in der Collection vorhanden sind 14 / 15
Beispiel zu Iterator
/ / l e e r e L i s t e von S t r i n g s erzeugen A r r a y L i s t l i s t e = new A r r a y L i s t ( ) ; / / einige l i s t e . add l i s t e . add l i s t e . add
S t r i n g s hinzufuegen ( ” Ada Lovelace ” ) ; ( ” Konrad Zuse ” ) ; ( ” Jimmy Wales ” ) ;
/ / l i s t e m i t t e l s I t e r a t o r durchlaufen I t e r a t o r i t e r = l i s t e . i t e r a t o r ( ) ; while ( i t e r . hasNext ( ) ) System . o u t . p r i n t l n ( i t e r . n e x t ( ) ) ;