Collecties

Leerdoelen

Na het bestuderen van dit hoofdstuk wordt van je verwacht dat je:

  • weet hoe je een ArrayList maakt en gebruikt
  • de for-each lus kent
  • uitvoer kunt formatteren met String.format() en printf()

In dit hoofdstuk leer je werken met de klasse ArrayList. In een ArrayList kun je objecten opbergen. Een ArrayList is een stuk flexibeler dan een array omdat je er objecten bij kunt doen en er weer uit kan halen met de opdrachten add(object) en remove(object).

//maak een object van type Leerling
Leerling leerling = new Leerling("Pietje", "3c");

//maak een lijst van type Leerling
ArrayList<Leerling> leerlingen = new ArrayList<Leerling>();

//stop leerling in lijst
leerlingen.add(leerling);

//haal hem er weer uit
leerlingen.remove(leerling);

Lijsten kun je doorlopen met een zogenaamde "for-each" opdracht. De volgende twee lussen doen precies hetzelfde, namelijk de namen van de leerlingen uit de lijst afdrukken:

for (int i = 0; i < leerlingen.size(); i++) {
    Leerling leerling = leerlingen.get(i);
    System.out.println(leerling.getNaam());
}

for (Leerling leerling: leerlingen) {
    System.out.println(leerling.getNaam());

De grootte van een ArrayList kun je opvragen met de methode size(). Dit is anders dan de grootte van een array die je met .length opvraagt. In het tweede voorbeeld wordt ieder object in de lijst langs gelopen en tijdelijk leerling genoemd. Let op: leerling is dus steeds een ander object van de lijst! Op het object leerling kunnen de public methoden van de klasse Leerling worden aangeroepen.

Nadeel van een ArrayList is dat je er alleen objecten in mag stoppen en geen primitieven zoals int en double. Om dit nadeel op te lossen heeft java klassen die primitieve waarden als objecten kunnen verpakken. Voorbeelden zijn Integer, Double, Float, Long en Boolean. Let op de hoofdletters!