Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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. raw List.
  • Kies de juiste collectie voor de taak (uniek? volgorde? snelle zoekopdrachten?).
  • Gebruik Comparator voor sorteerlogica buiten je modelklassen.

Koppeling met oefeningen:

  • Zie java-workbook/src/chapter_13.md voor opdrachten met List/Set/Map en generics.
  • Uitwerkingen in java-solutions/src/chapter_13.md en Java-bestanden.