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 ( ) ) ;

15 / 15