27
Die Java-Bibliothek

Die Java-Bibliothek - Uni Bremen · Java API Java 2 Collections Interfaces List Klassen Map Klassen Set Klassen Collections J2SE 5.0 Interface: List void add( int index , Object element

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Die Java-Bibliothek

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