Hoofdstuk 13 — Collecties en Generics (lijsten, verzamelingen en types)
Java biedt krachtige verzamelingen (collecties) zoals List, Set en Map. Met generics geef je type-informatie mee zodat je veiliger en leesbaarder code krijgt. In dit hoofdstuk leer je de basis en veelgebruikte patronen.
Voorbeeld 1 — List basis (ArrayList)
import java.util.*;
public class Demo13_1 {
public static void main(String[] args) {
List<String> namen = new ArrayList<>();
namen.add("Kim");
namen.add("Bo");
for (String n : namen) System.out.println(n);
}
}
Voorbeeld 2 — Set (unieke elementen)
import java.util.*;
public class Demo13_2 {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(1); set.add(2); set.add(2);
System.out.println(set); // geen dubbelen
}
}
Voorbeeld 3 — Map (sleutel-waarde)
import java.util.*;
public class Demo13_3 {
public static void main(String[] args) {
Map<String, Integer> punten = new HashMap<>();
punten.put("Kim", 8);
punten.put("Bo", 7);
System.out.println(punten.get("Kim"));
}
}
Voorbeeld 4 — Itereren over Map entries
import java.util.*;
public class Demo13_4 {
public static void main(String[] args) {
Map<String, Integer> m = Map.of("a",1, "b",2);
for (Map.Entry<String,Integer> e : m.entrySet()) {
System.out.println(e.getKey() + " -> " + e.getValue());
}
}
}
Voorbeeld 5 — Sorteren met Comparator
import java.util.*;
public class Demo13_5 {
public static void main(String[] args) {
List<String> l = new ArrayList<>(List.of("Saar","Bo","Kim"));
l.sort(Comparator.naturalOrder());
System.out.println(l);
l.sort(Comparator.comparingInt(String::length));
System.out.println(l);
}
}
Voorbeeld 6 — Generieke methode
import java.util.*;
public class Demo13_6 {
static <T> void printAlle(Collection<T> c) {
for (T t : c) System.out.println(t);
}
public static void main(String[] args) {
printAlle(List.of(1,2,3));
printAlle(Set.of("a","b"));
}
}
Voorbeeld 7 — Eigen generieke klasse (paar)
class Paar<A,B> {
final A links; final B rechts;
Paar(A links, B rechts){ this.links = links; this.rechts = rechts; }
}
public class Demo13_7 {
public static void main(String[] args) {
Paar<String,Integer> p = new Paar<>("x", 10);
System.out.println(p.links + ":" + p.rechts);
}
}
Voorbeeld 8 — List vs LinkedList kort, en prestaties
// ArrayList: snelle random access, trager invoegen middenin.
// LinkedList: snel invoegen/verwijderen aan randen, trage random access.
Voorbeeld 9 — Veelgebruikte hulpfuncties
import java.util.*;
public class Demo13_9 {
public static void main(String[] args) {
List<Integer> l = new ArrayList<>(List.of(3,1,2));
Collections.sort(l);
System.out.println(l);
Collections.reverse(l);
System.out.println(l);
}
}
Tips:
- Gebruik generics consequent:
List<String>i.p.v. rawList. - Kies de juiste collectie voor de taak (uniek? volgorde? snelle zoekopdrachten?).
- Gebruik
Comparatorvoor sorteerlogica buiten je modelklassen.
Koppeling met oefeningen:
- Zie
java-workbook/src/chapter_13.mdvoor opdrachten met List/Set/Map en generics. - Uitwerkingen in
java-solutions/src/chapter_13.mden Java-bestanden.