+ All Categories
Home > Documents > Java Generics &...

Java Generics &...

Date post: 13-Sep-2019
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
43
Java Generics & Collections Praktikum Ezientes Programmieren (Sommersemester 2017) Dennis Reuling
Transcript
Page 1: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics & Collections

Praktikum Effizientes Programmieren (Sommersemester 2017)

Dennis Reuling

Page 2: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Agenda

1 Generics

2 Collections

3 Literatur

1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 3: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Teil 1

Generics

2 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 4: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Ein Beispiel...

Elemente nach einer Definition ordnen:

String Integer

Viel Redundanz

Unnotige LOC

2 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 5: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Ein Beispiel...

Elemente nach einer Definition ordnen:

String Integer

Viel Redundanz

Unnotige LOC

2 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 6: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Mogliche Losung

Auf gemeinsamen Typ”zuruckziehen“, hier Object:

Object verhindert aber Typsicherheit

Unlesbar fur Entwickler, was enthalt ranking[] ?

Daher . Java Generics

3 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 7: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Mogliche Losung

Auf gemeinsamen Typ”zuruckziehen“, hier Object:

Object verhindert aber Typsicherheit

Unlesbar fur Entwickler, was enthalt ranking[] ?

Daher . Java Generics

3 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 8: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Mogliche Losung

Auf gemeinsamen Typ”zuruckziehen“, hier Object:

Object verhindert aber Typsicherheit

Unlesbar fur Entwickler, was enthalt ranking[] ?

Daher . Java Generics

3 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 9: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Allgemeines

Idee

Typparameter einfuhren, um auf verschiedenen Typen von Objekten(gleich) arbeiten zu konnen.

Geschichte

Ursprung: Generic Java (1998)

Integriert: seit JDK 5 (2004)

Zukunft: Project Valhalla[1] (t.b.a.)

4 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 10: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Ubersicht

Ursprung: Viele Probleme lassen sich ahnlich losen

Daher: Datenstrukturen (spater . Collections) oder Methodenteilen sich Eigenschaften

Beispiele:

- Elemente hinzufugen, sortieren, . . .- Operationen ausfuhren, addieren, . . .

Ziele:

- Redundanz vermeiden- Typsicherheit gewahrleisten- (Methoden) aufrufe sinnvoll verallgemeinern

Warum nicht Vererbung ?

5 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 11: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Vererbung vs Generics

Vererbung

Druckt Ist-Ein aus

Beispiel:

Wenn Eigenschaftenubernommen werden und dieSubklasse die Oberklasserichtig darstellt

Generics

Druckt Von aus

Beispiel:

Wenn auf verschiedenenTypen gearbeitet werden kann(soll)

Es werden keine Eigenschaftendes Typparameter’s in derKlasse ubernommen

6 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 12: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Ein Beispiel zur Typsicherheit

Losung 1:

Losung 2:

Welche Losung ist besser ? Warum ?

7 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 13: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Grundlagen

Vorkommen in freier Wildbahn

Klasse:

Methoden:

Attribute:

Ubliche Typparameter

T Typ

E Element

K Key

V Value

N Number

8 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 14: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Subtyping

Ist folgender Code korrekt ?

Nein, aufgrund von Type Erasure (. spater!)

9 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 15: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Subtyping

Ist folgender Code korrekt ?

Nein, aufgrund von Type Erasure (. spater!)

9 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 16: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Subtyping

Generell:

Abbildung: Vererbungsbeziehung Generics [2]

Losung: Wildcards (mit Subtyping)

10 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 17: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Subtyping

Generell:

Abbildung: Vererbungsbeziehung Generics [2]

Losung: Wildcards (mit Subtyping)

10 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 18: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Allgemein

Idee: Typparameter einschranken, um eingrenzen zu konnen

Ansatz: Typhierarchien direkt mit dem Parameter angeben

Moglichkeiten:

- Upper- Lower- Unbound

Darstellung = ?

11 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 19: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Beispiele

Upper:

. Tierarzte durfen nur Tiere behandeln.

Lower:

. Tierarzte durfen nur Tiere und alle Supertypen behandeln(Katzen).

Unbound:

. Tierarzte behandeln alle gleich (schlecht/gut).

12 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 20: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Beispiele

Upper:

. Tierarzte durfen nur Tiere behandeln.

Lower:

. Tierarzte durfen nur Tiere und alle Supertypen behandeln(Katzen).

Unbound:

. Tierarzte behandeln alle gleich (schlecht/gut).

12 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 21: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Beispiele

Upper:

. Tierarzte durfen nur Tiere behandeln.

Lower:

. Tierarzte durfen nur Tiere und alle Supertypen behandeln(Katzen).

Unbound:

. Tierarzte behandeln alle gleich (schlecht/gut).

12 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 22: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Beispiele

Upper:

. Tierarzte durfen nur Tiere behandeln.

Lower:

. Tierarzte durfen nur Tiere und alle Supertypen behandeln(Katzen).

Unbound:

. Tierarzte behandeln alle gleich (schlecht/gut).

12 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 23: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wildcards - Verwendung

Richtlinie (bei Klassen):

IN-Variable: Upper

OUT-Variable: Lower

Variable nicht notig bzw Object reicht aus: Unbound

IN & OUT gleichzeitig: Keine

13 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 24: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Wiederholung

Abbildung: Vererbungsbeziehung Generics [2]

Warum Object als gemeinsame Superklasse ?

14 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 25: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Grundlegendes

Um Typsicherheit(zur Compilezeit) zu gewahrleisten, geht Javafolgendermaßen vor:

1 Alle Typparameter werden durch die Bounds oder aber Objectersetzt, falls keine Bounds vorhanden.

2 Typkonversionen werden eingefugt, falls notig

3 Bridge Methods werden zur Erhaltung von Polymorphie eingefugt

15 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 26: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Beispiele

Unbound - vorher

Unbound - nachher

Upper - vorher

Upper - nachher

16 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 27: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Einschrankungen (Auszug)

Primitive Typen konnen nicht verwendet werden (int, float,

...)(Ist aber dank Autoboxing meist kein Problem)

Typparameter konnen nicht instanziiert werden

Statische Attribute unterstutzen keine Typparameter

Arrays konnen nicht aus parametrisierten Typen abgeleitetwerden

Aber: Sie sehen einfach komplexer aus ;-)

17 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 28: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Motivation

Allgemein

Subtyping &Wildcards

Type Erasure

Einschrankungen

Collections

Literatur

Einschrankungen (Auszug)

Primitive Typen konnen nicht verwendet werden (int, float,

...)(Ist aber dank Autoboxing meist kein Problem)

Typparameter konnen nicht instanziiert werden

Statische Attribute unterstutzen keine Typparameter

Arrays konnen nicht aus parametrisierten Typen abgeleitetwerden

Aber: Sie sehen einfach komplexer aus ;-)

17 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 29: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Teil 2

Collections

18 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 30: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Allgemeines

Idee

Bibliothek, um Gruppen von (zusammengehorigen) Elementen(generisch) zu verwalten.Vorbild / Inspiration: C++ STL

Geschichte

Ursprung: Collections Package (1997)

Integriert: seit JDK 2 (1998)

Umsetzung

Verwendet Java Generics sowie allgemeingultige Schnittstellen

18 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 31: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Ubersicht

Abbildung: Java Collections Schnittstellen [2]

19 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 32: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Collections Interface

Bietet allgemeingultige Aufrufe an

Konstruktor-Aufruf wandelt jegliche Collection in die gewunschteum, Beispiel:

Basis Methoden:

- int size(), boolean isEmpty(), Iterator<E> iterator()

Element-spezifische Methoden:

- boolean contains(Object element), boolean add (E

element), boolean remove(E element)

Gruppen-spezifische Methoden:

- boolean containsAll(Collection<?> c), void clear(),

Object[] toArray()

20 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 33: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Set

Beschreibung

Sets sind Kollektionen, die keine Duplikate enthalten durfen.

Methoden

Keine Erweiterung zu allgemeiner Collection

Einschrankungen hinsichtlich Elemente, z.B. Einfugen vonbereits vorhandenem Element nicht erlaubt (add liefert false)

Semantik der mathematischen Mengenlehre nachgebildet

Beispiel (Naturliche Gleichheit)

Vorher:

Nachher:

21 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 34: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Gleichheit

Gleichheit muss (selbst) definiert werden, um Collections sinnvoll(und performant) verwenden zu konnen.

Zwei Methoden verfugbar:- boolean equals(Object obj):

Muss true liefern, wenn zwei Objekte gleich sindMuss eine Aquivalenzrelation sein

- int hashCode():

Berechnet einen int-Wert, der bei gleichen Objekten den gleichenWert liefern muss (d.h. wenn equals true liefert)Konnte bei verschiedenen Objekten den gleichen Wert liefern

Beispiel:

22 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 35: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

List

Beschreibung

Lists sind Kollektionen, die eine Ordnung besitzen.

Methoden

Erweiterungen zu allgemeiner Collection: Positionsbezogene(r)

- Zugriff- Suche- Iterator- Bereichs-Ansicht

Beispiel (Naturliche Ordnung)

Vorher:

Nachher:

23 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 36: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Ordnung

Eine Ordnung muss (selbst) definiert werden, um Collectionssinnvoll (und performant) verwenden zu konnen.

Zwei Moglichkeiten:

- Comparable Interface (in o1) implementierenint compareTo(Object o2)

- Comparator implementierenint compare(T o1, T o2)

- Beide liefern:

0, wenn o1 = o2−1, wenn o1 < o21, wenn o1 > o2

Beispiel:

24 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 37: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Queue

Beschreibung

Queues sind Kollektionen, die eine Verarbeitungsreihenfolgedefinieren (ublich FIFO).

Methoden

Erweiterungen zu allgemeiner Collection: Verbrauch vonElementen:

Erstes Element holen und entfernen

Kapazitaten konnen festgelegt werden

Beispiel (Kapazitat 3)

Vorher:

Nachher:

25 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 38: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Deque

Beschreibung

Deques sind Queues, die von beiden Seiten manipuliert werden.

Methoden

Erweiterungen zu Queue:

- Letztes Element holen und entfernen- Erstes/Letztes Vorkommen holen und entfernen

26 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 39: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Map

Beschreibung

Maps sind keine Kollektionen, aber teil Teil der StandardBibliothek.

Sie beschreiben eine Abbildung zwischen einem eindeutigenSchlussel und einem Wert.

Methoden

Manipulation von Schlusseln und Werten:

put(K key, V value)

remove(Object key)

Teile einer Map konnen als Collections abgebildet werden:

keySet: Alle Schlussel als Set<K>

values: Alle Werte als Collection<V>

entrySet: Alle Eintrage als Set<Map.Entry<K,V>>

27 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 40: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Map - Beispiele

Geordnet nach naturlicher Ordnung (Int):

Komplexe Sachverhalte durch Verschachtelung:

28 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 41: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Einfuhrung

Schnittstellen

Set

List

Queue

Deque

Map

Implementation

Literatur

Implementierungen

Abbildung: Java Collections Implementierungen [5]

29 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 42: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Literatur Teil 3

Literatur

30 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)

Page 43: Java Generics & Collectionspi.informatik.uni-siegen.de/lehre/Vertiefungspraktika/2017s/materials/... · 2 Typkonversionen werden eingef ugt, falls n otig 3 Bridge Methods werden zur

Java Generics&

Collections

D. Reuling

Generics

Collections

Literatur

Weiterfuhrende Literatur

1 Maurice Naftalin, Philip Wadler - Java Generics and Collections,O’ Reilly Verlag, 2006

2 Oracle - Java Tutorials(http://docs.oracle.com/javase/tutorial/)

3 Angelika Langer - JavaFAQ (http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html)

4 Project Valhalla(http://openjdk.java.net/projects/valhalla/)

5 Java Collections Cheat Sheet (http://pedrocardoso.eu/scjp-java-collections-cheat-sheet/)

30 / 30 Praktikum Effizientes Programmieren (Sommersemester 2017)


Recommended