dvg2 - 07 - collection-framework1 das collection-framework von java
TRANSCRIPT
![Page 1: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/1.jpg)
DVG2 - 07 - Collection-Framework 1
Das Collection-Framework von JAVA
![Page 2: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/2.jpg)
DVG2 - 07 - Collection-Framework 2
Aufgaben des Collection-Frameworks Das Collection-Framework stellt Klassen und Interface zur
Verfügung, mit deren Hilfe komplexe Datenstrukturen verwaltet werden können. Z.B.: Listen (Duplikate möglich) Mengen (keine Duplikate) Bäume (nach einem Kriterium sortiert)
Dabei wird streng unterschieden zwischen den Schnittstellen zum Zugriff auf die Daten (in Interfacen definiert) und den Methode der Datenspeicherung (in Klassen die die Interface implementieren). Auf unterschiedlich gespeicherte Daten kann in sehr ähnlicher Weise zugegriffen werden. Vorteile: Die Datenspeicherungsart kann so gewählt werden, dass die
Arbeit möglichst effektiv realisiert werden kann. Die Datenspeicherungsart kann leicht geändert werden. Das Collection-Framework kann sowohl durch neue
Speichermethoden als auch durch neue Zugriffsmethoden erweitert werden.
![Page 3: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/3.jpg)
DVG2 - 07 - Collection-Framework 3
Struktur des Collection-FrameworksAbstractCollection
AbstractSet AbstractList
AbstractSequentialList
Set
Collection
SortedSet
List
HashSet
TreeSet ArrayListLinkedListLinkedHashSet Vector
![Page 4: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/4.jpg)
DVG2 - 07 - Collection-Framework 4
Interface des Collection-Framworks Basis-Interface ist das Interface Collection Von Collection sind alle anderen Interface abgeleitet. Keine Klasse implementiert direkt das Interface Collection. Nur die
abgeleiteten Interface werden implementiert. In Collection sind Methoden definiert, die in allen Implementierungen
vorhanden sein müssen. Spezifische Methoden (z.B. sortieren) sind in abgeleiteten Interfacen
(z.B. SortedSet) definiert. Eine Collection repräsentiert eine beliebige Gruppe von Objekten.
Das Interface wird üblicherweise nicht implementiert, sondern nur die daraus abgeleiteten Interface.
Jede Implementierung sollte mindestens zwei Konstruktoren implementieren. Einen ohne Parametere, der eine leere Collection erzeugt und einen mit eine beliebigen Collection als Parameter. Damit kann eine beliebige andere umgewandelt werden.
![Page 5: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/5.jpg)
DVG2 - 07 - Collection-Framework 5
Methoden des Interfaces Collection public boolean add/remove/contains(Object o)
Hinzufügen/Löschen/Existenztest eines Objektes public boolean
addAll/removeAll/containsAll(Collection c)Hinzufügen/Löschen/Existenztest aller Element der Collection c
public boolean retainAll(Collection c)Löschen aller Elemente, außer der die in c enthalten sind
public void clear()leert die Collection
public boolean isEmpty()prüft, ob die Liste leer ist
public int size()gibt die Anzahl der Elemente der Collection aus
public Iterator iterator()gibt einen Iterator aus, mit dem man alle Objekte der Collection erreichen kann
![Page 6: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/6.jpg)
DVG2 - 07 - Collection-Framework 6
public Object[] toArray()gibt alle Elemente der Collection in ein Feld aus
public Object[] toArray(Object[] a)das Ergebnis-Array hat den selben Typ wie a. Es werden nur die Elemente der Collection ausgegeben, die zu diesem Typ passen. Passen alle derartigen Elemente in das Feld a werden sie darin gespeichert, sonst wird ein neues Feld angelegt und diese ausgegeben.
addXXX, removeXXX, retainAll ergeben als Wert true, wenn die Collection durch die Operation verändert wurde, sonst false.
Die Methoden add, addAll, clear, remove, removeAll und retainAll müssen nicht implementiert werden. Sie werfen dann die Ausnahme UnsupportedOperationException.
![Page 7: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/7.jpg)
DVG2 - 07 - Collection-Framework 7
Die Klasse AbstractCollection Die Klasse AbstractCollection implementiert die meisten
Methoden des Interfaces Collection auf eine Standardweise. Diese kann bei der Definition speziellerer Collections überschrieben werden.
Die Methoden iterator und size werden nicht implementiert. Die Klasse ist daher abstract.
![Page 8: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/8.jpg)
DVG2 - 07 - Collection-Framework 8
Das Interface Set Set ist von Collection abgeleitet. Set beschreibt Mengen von Objekten, wobei keine Duplikate erlaubt
sind. Die Methoden sind identisch mit denen von Collection. Set und Collection unterscheiden sich nur in der Vereinbarung, dass
Set keine Duplikate enthält.
![Page 9: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/9.jpg)
DVG2 - 07 - Collection-Framework 9
Die Klasse AbstractSet Die Klasse AbstractSet implementiert die Methoden des Interfaces
Set und ist abgeleitet von der abstrakten Klasse AbstractCollection.
Die Methoden iterator und size bleiben abstract, sodass die ganze Klasse abstract ist.
![Page 10: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/10.jpg)
DVG2 - 07 - Collection-Framework 10
Die Klasse HashSet Die Klasse HashSet ist von AbstractSet abgeleitet und implementiert
die Methoden iterator und size auf geeignete Weise. HashSet implementiert die einfachste Menge, d.h. es sind keine
Duplikate enthalten und die Reihenfolge ist nicht definiert, sie kann sich während der Nutzung ändern.
Die Elemente werden in HashMaps gespeichert. Dadurch ist der Zugriff auf Elemente sehr schnell (nahezu konstant bzgl. der Anzahl der Elemente).
![Page 11: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/11.jpg)
DVG2 - 07 - Collection-Framework 11
Implementation von HashSet Für jedes Element der HashSet wird ein Hash-Code berechnet. Z.B.
die Speicheradresse als Integer-Größe. Hash-Codes identischer Objekte sind gleich. Verschiedene Objekte können gleiche Hash-Codes besitzen. Die Elemente werden in einem Feld von einfach verketteten Listen
gespeichert. Der Feldindex der Liste kann aus dem Hashcode direkt berechnet
werden: index=hashCode % Listenanzahl In den Listen wird dann sequentiell gesucht.
![Page 12: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/12.jpg)
DVG2 - 07 - Collection-Framework 12
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Daten
next
Hashcode
Daten
![Page 13: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/13.jpg)
DVG2 - 07 - Collection-Framework 13
Konstruktoren public HashSet()
erzeugt leeren HashSet public HashSet(Collection c)
erzeugt HashSet der alle Element der Collection c enthält public HashSet(int initialCapacity,
float loadFactor)erzeugt leere HashSet mit Anfangskapazität und loadFactor
public HashSet(int initialCapacity)enspricht HashSet(initialCapacity, 0.75f);
Wenn die Anzahl der Elemente größer als capacity*loadFactor wird eine neue HashTabelle aufgebaut, wobei capacity die aktuelle Kapazität der HashSet ist.
![Page 14: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/14.jpg)
DVG2 - 07 - Collection-Framework 14
Das Interface Iterator Die Methode iterator des Interfaces Collection gibt ein Objekt
aus, das das Interface Iterator implementiert. Das Interface Iterator wird in verschiedenen Klassen (z.B. HashMap)
durch interne Klassen implementiert. Diese Implementierungen sind aber nicht direkt benutzbar.
Es sind also genau die Methoden nutzbar, die im Interface definiert sind.
Methoden: public boolean hasNext()
stellt fest, ob der nächste Aufruf von next() erfolgreich sein wird public Object next()
gibt das nächste Element des Iterators aus. public void remove()
löscht das zuletzt mit next() gelesene Element des Iterators, wirkt sich auch auf die zugrunde liegende Collection aus.
![Page 15: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/15.jpg)
DVG2 - 07 - Collection-Framework 15
Beispiel Seminar mit HashSetimport java.util.*;
public class THashSet{
public static void main(String[] args)
{
Collection seminar = new HashSet();
System.out.println(seminar.add(new Student("Abu","George",1)));
...
System.out.println(seminar.add(new Student("Xu","Liman",41)));
Student s=new Student("Yildiz","Gülsüm",42);
System.out.println(seminar.add(s));
System.out.println(seminar.add(s));
System.out.println(seminar);
System.out.println("Azahl der Studenten = "+seminar.size());
print(seminar);
}
public static void print(Collection col){
Iterator it = col.iterator();
while (it.hasNext()) System.out.println(it.next());
}
}
![Page 16: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/16.jpg)
DVG2 - 07 - Collection-Framework 16
Das Interface List List ist von Collection abgeleitet. List beschreibt Collectionen, in denen die Elemente in einer
definierten Reihenfolge gespeichert sind. Sie sind daher wie in einem Array über einen Index erreichbar.
Der erste Index ist immer = 0 (wie bei Arrays). Es können Duplikate in der Liste enthalten sein. Der Nutzer hat volle Kontrolle über die Reihenfolge der Elemente. Das Interface List definiert zusätzliche Methoden, die den geforderten
Eigenschaften gerecht werden.
![Page 17: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/17.jpg)
DVG2 - 07 - Collection-Framework 17
Neue Methoden im Interface List public void add (int index, Object element)
Hinzufügen eines Elements an der Position index. public boolean addAll(int index, Collection c)
Hinzufügen aller Element der Collection c an der Position index. public void remove(int index)
Löschen des Elements an der Position index. public Object get(int index)
Lesen des Elements an der Position index. public Object set(int index, Object element)
Ersetzen des Elements an der Position index. public int indexOf/lastIndexOf(Object o)
Sucht das erste/letzte Vorkommen des Elements o in der Liste.
![Page 18: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/18.jpg)
DVG2 - 07 - Collection-Framework 18
public ListIterator listIterator()Erzeugt einen ListIterator, der alle Elemente der Liste in der gegebenen Reihenfolge enthält.
public ListIterator listIterator(int index)Erzeugt einen ListIterator, der alle Elemente der Liste beginnend beim index in der gegebenen Reihenfolge enthält.
public List subList(int fromIndex, int toIndex)Erzeugt eine Teilliste mit den Indizes fromIndex ... (toIndex-1). Operation auf der Unterlistliste wirken sich auch auf die Originalliste aus. Z.B. löscht die Anweisunglist.subList(from, to).clear();einen ganzen Bereich der Originalliste.
Zusätzlich zu den optionalen Methoden des Interfaces Collection ist die Methode set optional.
![Page 19: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/19.jpg)
DVG2 - 07 - Collection-Framework 19
Die Klasse AbstractList AbstractList ist von der Klasse AbstractCollection
abgeleitet und implementiert das Interface List Alle Methoden des Interfaces List außer get und size werden
implementiert. get und size bleiben abstract. Zusätzlich implementierte Methode:
protected void removeRange(int fromIndex, int toIndex)löscht alle Elemente von fromIndex bis (toIndex-1)
![Page 20: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/20.jpg)
DVG2 - 07 - Collection-Framework 20
Die Klasse ArrayList ArrayList ist von AbstractList abgeleitet und implementiert die
Methode size. Die Klasse ArrayList stellt ein Array zur Verfügung, das genau so
effektive Zugriffe erlaubt, wie das normale Array, aber automatisch wächst. Außerdem können Elemente eingefügt werden.
![Page 21: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/21.jpg)
DVG2 - 07 - Collection-Framework 21
Implementation von ArrayList Die Elemente werden in einem Object[] gespeichert. Zum Kopieren des Feldes bei Änderungen wird die Methode
System.arraycopy verwendet.
Daten
Daten
Daten
Daten
Daten
![Page 22: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/22.jpg)
DVG2 - 07 - Collection-Framework 22
Konstruktoren von ArrayList public ArrayList() public ArrayList(Collection c) public ArrayList(int initialCapacity)
erzeugt eine ArrayList mit der Kapazität initalCapacity
![Page 23: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/23.jpg)
DVG2 - 07 - Collection-Framework 23
Methoden von ArrayList public void ensureCapacity(int minCapacity)
erhöht dir Kapazität des Feldes, so dass mindestens minCapacity Elemente gespeichert werden können.
public void trimToSize()Verkleinert das Feld so, dass kein unnötiger Speicherplatz benötigt wir.
![Page 24: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/24.jpg)
DVG2 - 07 - Collection-Framework 24
Das Interface ListIterator Das Intefrace ListIterator vom Interface Iterator abgeleitet und
dem Zugriff auf die Elemente einer Collection. Dabei werden zusätzliche Methoden definiert, wie sie zum Zugriff auf
Listen zweckmäßig sind. Zusätzliche Methoden:
public boolean hasPrevious()stellt fest, ob der nächste Aufruf von previous() erfolgreich sein wird
public Object previous()gibt das vorhergende Element des Iterators aus
public int nextIndex()bestimmt den Index des nächsten Listenelements
public int previousIndex()bestimmet den Index des vorhergehenden Listenelements
public void add(Object o)fügt ein Listenelement hinzu
public void set(Object o)ersetzt ein Listenelement
![Page 25: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/25.jpg)
DVG2 - 07 - Collection-Framework 25
Beispiel Seminar mit TreeList Einzige Änderung:
Collection seminar = new ArrayList(); Resultat:
Duplikate werden gespeichert. Die Daten behalten die Reihenfolge der Speicherung.
Wenn die zusätzlichen Listen-Möglichkeiten genutzt werden sollen muss folgende Änderung vorgenommen werden:List seminar = new ArrayList();
Dann kann die List auch rückwärts gelesen werden und es können Element hinzugefügt werden.
![Page 26: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/26.jpg)
DVG2 - 07 - Collection-Framework 26
Die Klasse AbstractSequentialList Die Klasse AbstractSequentialList ist von AbstractList
abgeleitet. Die Methode listIterator ist nicht implementiert. AbstractSequentialList ist für Listen gedacht, die
ausschließlich sequentiell bearbeitet werden sollen (z.B. LinkedList). Dabei kann die Liste vorwärts und rückwärts durchlaufen werden.
Zusätzliche Mehode:public abstract ListIterator listIterator(int index)erzeugt einen ListIterator, der die Element beginnend mit dem Index index enthält.
![Page 27: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/27.jpg)
DVG2 - 07 - Collection-Framework 27
Die Klasse LinkedList Die Klasse LinkedList ist von der Klasse AbstractSequentialList
abgeleitet. LinkedList stellt eine Liste zur Verfügung, die hauptsächlich
sequentiell verarbeitet werden kann. Der Zugriff über index ist möglich, aber sehr uneffektiv. Änderungen der Liste erfordern kein Umkopieren, wie bei ArrayList. LinkedList ist also für Listen geeignet,
deren Größe häufig wechselt, wo Element häufig gelöscht bzw. hinzugefügt werden, die Elemente sequentiell bearbeitet werden.
![Page 28: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/28.jpg)
DVG2 - 07 - Collection-Framework 28
Implementierung von LinkedList Die Liste wird als doppelt zyklisch verkettete Liste gespeichert.
Dadurch kann vorwärts und rückwärts zugegriffen werden. Es existieren Anfang und Ende der Liste.
null next previous
Daten next previous
Daten next previous
Daten next previous
header
![Page 29: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/29.jpg)
DVG2 - 07 - Collection-Framework 29
Konstruktoren und Methoden von LinkedList Konstruktoren
public LinkedList() public LinkedList(Collection c)
Zusätzliche Methoden public void addFirst/ addLast(Object o)
Hinzufügen am Anfang/Ende der Liste public Object getFirst/ getLast()
Lesen des ersten/letzten Listenelements public Object removeFirst/ removeLast()
Löschen des ersten/letzten Listenelements
![Page 30: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/30.jpg)
DVG2 - 07 - Collection-Framework 30
Beispiel Seminar als LinkedList Einzige erforderliche Änderung:
Collection seminar = new LinkedList(); Falls man Zugriff auf spezielle Methoden der LinkedList benötigt,
muss manLinkedList seminar = new LinkedList();nutzen.
![Page 31: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/31.jpg)
DVG2 - 07 - Collection-Framework 31
Das Interface SortedSet Das Interface SortedSet ist vom Interface Set abgeleitet. SortedSet stellt einen Set zur Verfügung in dem Elemente sortiert
gespeichert werden. Dazu müssen die Elemente eine natürliche Ordnung besitzen, d.h. es
läßt sich eindeutig entscheiden ob ein Element größer oder kleiner als ein anderes Element ist oder ob beide gleich sind.
Dazu können sie das Interface Comparable implementieren oder sie lassen sich mit dem zum SortedSet gehörigen Comparator vergleichen.
Die Teilmengen-Methoden (headSet, tailSet, subSet) liefern Sichten auf die Menge, d.h. Änderungen in den Teilmengen wirken sich auch auf die eigentliche Menge aus.
![Page 32: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/32.jpg)
DVG2 - 07 - Collection-Framework 32
Methoden in SortedSet public Comparator comparator()
gibt den Comparator aus public Object first/last()
gibt das kleinste/größte Element der Menge aus public SortedSet headSet/tailSet(Object element)
gibt die Teilmenge der Menge aus, die alle Element enthält die kleiner/nicht kleiner als element sind
public SortedSet subSet(Object fromElement, Object toElement)gibt die Teilmenge der Menge aus, die alle Element enthält die nicht kleiner als fromElement und kleiner als toElement sind
![Page 33: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/33.jpg)
DVG2 - 07 - Collection-Framework 33
Das Interface Comparable Das Interface Comparable definiert genau eine Methode:
public int compareTo(Object o)der Wert ist kleiner, gleich bzw. größer 0 wenn das Objekt kleiner, gleich bzw. größer o ist
Die Implementierung muss folgende Bedingungen erfüllen: sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) Transitivität: x.compareTo(y)>0 && y.compareTo(z)>0 x.compareTo(z)>0
x.compareTo(y)==0 sgn(x.compareTo(z)) == sgn(y.compareTo(z))
![Page 34: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/34.jpg)
DVG2 - 07 - Collection-Framework 34
Beispiel Studentpublic class Student implements Comparable
{
String nachName = "";
String vorName = "";
long matrikelNummer = -1;
...
public int compareTo(Object o)
{
return (int)(matrikelNummer-((Student)o).matrikelNummer);
}
...
![Page 35: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/35.jpg)
DVG2 - 07 - Collection-Framework 35
Das Interface Comparator Definiert folgende Methode:
public int compare(Object o1, Object o2)vergleicht die Objekte o1 und o2 miteinander. Die zu erfüllenden Bedingungen entsprechen denen von Comparable.compareTo .
![Page 36: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/36.jpg)
DVG2 - 07 - Collection-Framework 36
Beispiel StudentCompareimport java.util.*;
public class StudentCompare implements Comparator
{
public int compare(Object o1, Object o2)
{
return (int)( ((Student)o1).matrikelNummer-
((Student)o2).matrikelNummer);
}
}
![Page 37: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/37.jpg)
DVG2 - 07 - Collection-Framework 37
Die Klasse TreeSet Die Klasse TreeSet ist abgeleitet von AbstractSet und implementiert
das Interface SortedSet. Es wird eine Menge (keine Duplikate) bereitgestellt, deren Elemente
entsprechend einer vorgegebenen Ordnung sortiert sind. Die Ordnung bleibt jederzeit erhalten. Durch die Speicherungsart ist das Einfügen, Löschen und Suchen
von Elementen sehr schnell (O(ln n)).
![Page 38: DVG2 - 07 - Collection-Framework1 Das Collection-Framework von JAVA](https://reader035.vdocuments.site/reader035/viewer/2022062404/55204d6749795902118bd4a0/html5/thumbnails/38.jpg)
DVG2 - 07 - Collection-Framework 38
Implementierung von TreeSet TreeSet wird als binärer Baum implementiert.
Daten
links rechts
Daten
links rechts
Daten
links rechts
Daten
links rechts
Daten
links rechts
Daten
links rechts
Daten
links rechts
<
<
<
<
<
<
<>
>
>
>
>
>
>