Heute lernst du:
<T>) für Klassen, Methoden und Collections verwendetTreeSet, TreeMap, PriorityQueueCollections.sort und Collections.reverseAm Ende wirst du typensicheren Code schreiben und erweiterte Collection-Funktionen effektiv nutzen können.
Generics erlauben es, Klassen oder Methoden mit einem Typparameter <T> zu definieren.
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
Box<String> box = new Box<>();
box.setContent("Hallo");
System.out.println(box.getContent()); // Hallo
Erweiterte Collections umfassen sortierte Sets und Maps sowie Queues mit Priorität.
import java.util.TreeSet;
TreeSet set = new TreeSet<>();
set.add(5);
set.add(3);
set.add(8);
System.out.println(set); // [3, 5, 8] automatisch sortiert
import java.util.TreeMap;
TreeMap scores = new TreeMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);
System.out.println(scores); // sortiert nach Schlüsseln
import java.util.PriorityQueue;
PriorityQueue pq = new PriorityQueue<>();
pq.add(10);
pq.add(5);
pq.add(15);
while(!pq.isEmpty()) {
System.out.println(pq.poll()); // 5, 10, 15
}
Du kannst Collections mit eigener Logik sortieren.
import java.util.*;
List names = Arrays.asList("Alice", "Bob", "Charlie");
Collections.sort(names, (a, b) -> b.compareTo(a)); // absteigend
System.out.println(names); // [Charlie, Bob, Alice]
Häufige Methoden:
Collections.sort(list) – aufsteigend sortierenCollections.reverse(list) – Reihenfolge umkehrenCollections.shuffle(list) – zufällig mischen
import java.util.*;
List<String> names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie"));
Collections.sort(names);
System.out.println(names);
Map<String, Integer> scores = new TreeMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);
System.out.println(scores);
Erstelle eine PriorityQueue mit ganzen Zahlen und gib die Elemente aufsteigend aus.
Schritte:
PriorityQueue<Integer>Beispiel:
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(10);
pq.add(5);
pq.add(20);
pq.add(1);
while(!pq.isEmpty()) {
System.out.println(pq.poll());
}
// Ausgabe: 1, 5, 10, 20
}
}