Upload
others
View
25
Download
0
Embed Size (px)
Citation preview
Java APIJava 2 Collections
Nutzliche Utility-Klassen des JDK
java.util : Collections, Properties, I18N, Scanner
java.text : Ausgabeformatierung u.a.
java.util.prefs : Hierarchische Konfigurationsdaten (1.5)
java.util.logging : Aufzeichnung von Ablaufinformationen (1.5)
javax.xml : Verarbeitung von XML-Dokumenten (1.5, vorher Xerces)
Die Java-Bibliothek
Java APIJava 2 Collections
java.util.Properties
Verwaltet String-Tupel (Key, Value)
unterstutzt laden/speichern
Methoden:
S t r i n g g e tP r ope r t y ( S t r i n g key )S t r i n g g e tP r ope r t y ( S t r i n g key , S t r i n g d e f a u l tV a l u e )Object s e tP r o p e r t y ( S t r i n g key , S t r i n g v a l u e )vo i d s t o r e ( OutputStream out , S t r i n g heade r )vo i d l oad ( InputSt ream inSt ream )
Dateiformat:
# commentdatabase = jdbc : mysql : // l o c a l h o s t :3306/mydblanguage = de
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Java 2 Collections
java.util.*
Bestandteil des JDK seit Java 1.2
Vorteile:
weniger Programmieraufwand
bessere Performanz
Standard-Schnittstellen
Wiederverwendung
Standardalgorithmen (Sort, Search)
http://java.sun.com/developer/onlineTraining/collections/Collection.html
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Collection Interfaces
<<SortedMap>>
<<Map>><<Set>><<List>>
<<Collection>>
<<SortedSet>>
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Collection Interfaces
Collection : Ansammlung von Objekten, Duplikate erlaubt
Set : Collection ohne Duplikate
SortedSet : Set mit Reihenfolge
List : Collection mit Positionen
Map : Zugriff auf Objekte uber ein Schlusselobjekt
SortedMap : Map mit Reihenfolge
→ es sollte soweit wie moglich das Interface und nicht eine bestimmteImplementierungsklassen verwendet werden
L i s t s e a r c h ( S t r i n g what ) {L i s t r e s u l t = new A r r a y L i s t ( ) ;. . .r e t u r n r e s u l t ;
}
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Interface: Collection
vo i d c l e a r ( )boo l ean add ( Object e l ement )boo l ean addA l l ( C o l l e c t i o n c )boo l ean c o n t a i n s ( Object e l ement )boo l ean c o n t a i n s A l l ( C o l l e c t i o n c )boo l ean remove ( Object e l ement )boo l ean removeA l l ( C o l l e c t i o n c )boo l ean r e t a i n A l l ( C o l l e c t i o n c )Object [ ] t oAr r ay ( ) , Object [ ] t oAr ray ( Object [ ] a r r a y )i n t s i z e ( )boo l ean isEmpty ( )I t e r a t o r i t e r a t o r ( )
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Interface: Set / SortedSet
Set :
Interface identisch zu Collection
keine Duplikate
SortedSet :
Comparator comparator ( )Object f i r s t ( )Object l a s t ( )So r t edSe t headSet ( Object toElem )So r t edSe t t a i l S e t ( Object f romElement )So r t edSe t subSet ( Object from , Object to )
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Interface: List
vo i d add ( i n t index , Object e l ement )boo l ean addA l l ( i n t index , C o l l e c t i o n c )Object remove ( i n t i nd ex )Object s e t ( i n t index , Object e l ement )Object ge t ( i n t i nd ex )i n t indexOf ( Object o )i n t l a s t I n d e xO f ( Object o )L i s t s u b L i s t ( i n t f romIndex , i n t t o I nd e x )L i s t I t e r a t o r l i s t I t e r a t o r ( )L i s t I t e r a t o r l i s t I t e r a t o r ( i n t i nd ex )
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Map Interface
Abbildung von Objekten (Key) auf Objekte (Value)
Schlussel eindeutig
Identifikation uber hashCode() und equals()
Daher: Vorsicht bei eigenen Klassen!
SortedMap : zusatzlich Sortierung auf Keys
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Interface: Map
vo i d c l e a r ( )boo l ean con ta in sKey ( Object key )boo l ean con t a i n sVa l u e ( Object v a l u e )Object ge t ( Object key )Object put ( Object key , Object v a l u e )vo i d p u tA l l (Map t )Object remove ( Object key )boo l ean isEmpty ( )i n t s i z e ( )Set keySet ( )C o l l e c t i o n v a l u e s ( )Set e n t r yS e t ( )
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
List Klassen
<<List>>
ArrayListLinkedList
AbstractCollection
<<Collection>>
AbstractList
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Vergleich LinkedList/ArrayList
0 1 2 3 4 5
Head
6
size()=5
ArrayList
LinkedList
null
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Vergleich zu integrierter Implementierung
0 1 2 3 4 5
Head
6
size()=5
Ein Feld von Nutzobjekten
Nutzobjekte, welche sich selber verlinken
null
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Vergleich LinkedList / ArrayList
beide: Kapazitat dynamisch
ArrayList : evtl. umkopieren notig
LinkedList : zusatzliche Methoden:{add,get,remove}{First,Last}
LinkedList ArrayListeinfugen/loschen O(n) O(n)anfugen/loschen hinten O(1) O(1)anfugen/loschen vorne O(1) O(n)Indexzugriff O(n) O(1)suchen O(n) O(n)
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Vergleich Iteration
Schlecht:f o r ( i n t i = 0 ; i < l i s t . s i z e ( ) ; i ++ ) {
Object elem = l i s t . ge t ( i ) ;// body
}
Gut:I t e r a t o r i t e r = l i s t . i t e r a t o r ( ) ;wh i l e ( i t e r . hasNext ( ) ) {
Object elem = i t e r . nex t ( ) ;// body
}
Java 1.5:f o r ( Object elem : l i s t ) {
// body}
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Collection Interfaces (Erinnerung)
<<SortedMap>>
<<Map>><<Set>><<List>>
<<Collection>>
<<SortedSet>>
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Map Klassen
<<SortedMap>>
<<Map>>
AbstractMap
HashMap TreeMap
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Hash-Tabelle
hash
6
5
2
1
0
4
3 A
M
N
O
F T
E
J C XQ
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Binarbaum
Q
X
N
LB
J
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Vergleich HashMap / TreeMap
TreeMap balancieren→ wird sonst zu LinkedList
HashMap schnell, wenn nicht zu voll (≈ 70%)→ wird sonst zu LinkedList (schlechte hashCode() -Funktion)
TreeMap ist immer sortiert
HashMap im Normalfall schneller
TreeMap hat garantierte log. Zugriffszeit
HashMap TreeMapeinfugen O(1)-O(n) O(log n)loschen O(1)-O(n) O(log n)suchen O(1)-O(n) O(log n)
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Set Klassen
<<List>> <<Set>>
ArrayList HashSet
AbstractSet <<SortedSet>>
TreeSetLinkedList
<<Collection>>
AbstractCollection
AbstractList
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Set Klassen
benutzen entsprechende Map -Klassen
nur Key relevant
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Sortieren
Interface Comparable :
i n t compareTo ( Object e l ement )
Interface Comparator:
i n t compare ( Object elem1 , Object elem2 )boo l ean equa l s ( Object ob j )
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
Klasse Collections
Spezielle Collections:
unmodifiable
synchronized
singleton
empty
Algorithmen auf Listen:
Sortieren
binare Suche
Minimum/Maximum
fullen, kopieren, umdrehen, zufallig vertauschen
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
J2SE 5.0 (1)
generische Typen (d.h. mit Typinformation), insbesondere Collections:
Set<St r i ng > aSet = new HashSet<St r i ng >() ;
Iteration von for-Schleife unterstutzt (Collections und Felder) (siehejava.lang.Iterable ):
f o r ( S t r i n g aS t r i n g : aSet ) {System . out . p r i n t l n ( a S t r i n g ) ;
}
Autoboxing/unboxing:
L i s t <I n t e g e r > numbers = new Ar r a yL i s t <I n t e g e r >() ;f o r ( i n t n : numbers ) {
. . .}
Die Java-Bibliothek
Java APIJava 2 Collections
InterfacesList KlassenMap KlassenSet Klassen
CollectionsJ2SE 5.0
J2SE 5.0 (2)
Interfaces: Queue , BlockingQueue , ConcurrentMap
Implementierungen dazu (2/5/1)
EnumSet / Map (Bitvektoren)
Algorithmen: Haufigkeit (frequency), leere Schnittmenge (disjoint)
Enums:enum Co l o r s {
RED, BLUE, GREEN, YELLOW, BLACK}
varargs
printf:
System . out . fo rmat ( ”%02d %10s ” ,3 , ” asd ” ) ;System . out . p r i n t l n ( S t r i n g . fo rmat ( ”%02d %10s ” ,3 , ” asd ” ) ) ;
Die Java-Bibliothek