Man kann die Container-Klassen grob den folgenden Kategorien zuordnen:
- Listen (Interface
List<E>)- Speichern ihre Elemente der Reihe nach entweder in einem Array oder als sogenannte verkettete Liste, bei der jedes Objekt seinen Nachfolger und vielleicht auch seinen Vorgänger kennt.
- Mengen (Interface
Set<E>)- Enthalten keine doppelten Elemente.
- Assoziativspeicher (Interface
Map<K, V>)- Ordnen einem Schlüssel K (key) einem Wert V (value) zu.
- Schlangen (Interface
Queue<E>)- Sind hauptsächlich dafür gedacht, Objekte am Ende hinzuzufügen und am Anfang wegzunehmen
Linked List
LinkedList<E> l = new LinkedList<E>();In einer Linked List ist jedes Element ein Value und eine Referenz auf das nächste Objekt.
Man kann nicht über einen Index darauf zugreifen.
Um Daten einzufügen muss aber nur eine Referenz geändert werden.
Es gibt ein eigenes Tail und ein First Objekt.
Methoden
| Methode | Beschreibung |
|---|---|
add([int index,] <E> element) | Fügt ein Element an/ein |
addFirst(<E> element) | fügt vorne ein Element an |
addLast(<E> element) | fügt hinten ein Element an |
get(int index) | |
getFirst() | |
getLast() | |
contains(<E> element) | |
indexOf(<E> element) | |
remove({<E> element|int index}) | |
isEmpty() | |
pop() | Entfernt das letzte Element |
push(<E> element) | Fügt am Ende ein Objekt an |
size() |
Array List
ArrayList<E> a = new ArrayList<E>();Eine Array List ist im Hintergrund eine normales Array. Es kann per Index auf die Elemente zugegriffen werden. Wenn ein Element eingefügt wird muss aber das gesamte Array kopiert werden.
Methoden
| Methode | Beschreibung |
|---|---|
add([int index,] <E> element) | Fügt ein Element an/ein |
addFirst(<E> element) | fügt vorne ein Element an |
addLast(<E> element) | fügt hinten ein Element an |
get(int index) | |
getFirst() | |
getLast() | |
contains(<E> element) | |
indexOf(<E> element) | |
remove({<E> element|int index}) | |
isEmpty() | |
pop() | Entfernt das letzte Element |
push(<E> element) | Fügt am Ende ein Objekt an |
size() |
Tree Set
TreeSet<Integer> t = new TreeSet<Integer>();Das ist ein balancierter Binärbaum. Jedes Element hat ein Child das größer ist und eins das kleiner ist. Das erste Element das eingefügt wird ist die Wurzel. Wenn ein neues Element hinzugefügt wird wird der Baum neu aufgebaut um die Balance zu halten. Balance bedeutet, dass alle Zweige +-1 gleich lang sind.
HashMap
HashMap<Integer, Integer> h = new HashMap<>();Eine HashMap ist ein Key ←> Value Store.
Beim initialisieren deklarieren
Beispiel
HashMap<String, HashMap<Character, Double>> BaumKoffizienten= new HashMap<>() {
{
put("Fichte", new HashMap<>(){
{
put('A' , 0.85149);
put('B', 0.60934);
put('C', -0.00228);
}
});
put("Tanne", new HashMap<>(){
{
put('A' , 1.76896);
put('B', 0.59175);
put('C', 0.0);
}
});
}
};Iterator
Die Klasse Iterator ist ein Hilfsmittel, um mit dem selben Code die Elemente verschiedener Datenstrukturen zu durchlaufen, die das Interface Collection implementieren.