Competentie: Ik kan ArrayLists gebruiken om meerdere gelijksoortige waardes op te slaan.
Specifieke leerdoelen:
ArrayList
is en hoe je die gebruiktArrayList
declareert en initialiseert, en dat hij beperkt wordt tot één type.ArrayList
aanspreektArrayList
methoden en weet hoe/wanneer je ze gebruikt:
size()
add()
remove()
set()
get()
ArrayList
direct met waarden te initialiseren d.m.v. Arrays.asList()
ArrayLists
op het gebied van primitieve types, en dat je kunt hun “boxed” varianten gebruiken.ArrayList
dynamisch groter of kleiner kan worden.De opdrachten kunnen gevonden worden in de losse modulen.
Een ArrayList is een lijst met waarden van een bepaald type. Arraylists kunnen verschillende types hebben, bijvoorbeeld ArrayLists van Strings, ArrayList van integers, ArrayLists van characters. Maar in één ArrayList kunnen de waarden van maar één type tegelijk opgeslagen worden.
Een waarde in de ArrayList wordt een element genoemd. Het aantal elementen in de lijst doet er niet toe. Het kan veel of weinig zijn, het kan ook steeds een ander aantal elementen hebben. Een programma kan zo worden geschreven dat de lijst altijd werkt.
Elementen zijn benaderbaar met een indexnummer. Het eerste element heeft indexnummer 0.
Ongeacht het type van de waarden in de lijst, heeft een ArrayList een aantal handige methodes waarmee je de lijst kunt gebruiken en manipuleren.
Met een ArrayList heb je een flexibele lijst van veel waarden, onder één naam tot je beschikking.
In dit voorbeeld maken we met behulp van een ArrayList een namenlijst.
// declare and initialize a new arraylist, capable of holding Strings
ArrayList<String> names = new ArrayList<String>();
We voegen er wat namen aan toe:
// add a few names to the list
names.add("Kees");
names.add("Piet");
names.add("Truus");
Nu zijn we wel benieuwd hoeveel elementen er in de lijst staan.
// how many names do we have?
SaxionApp.printLine("The list contains " + names.size() + " names");
En staat Karel op de lijst?
// test if a name is on the list
if (names.contains("Karel")) {
SaxionApp.printLine("The name Karel is on the list");
} else {
SaxionApp.printLine("Karel is not on the list");
}
Tenslotte willen we Truus eigenlijk bij nader inzien toch niet op de lijst hebben.
// remove a name
names.remove("Truus");
In een arrayList kun je een praktisch onbeperkte hoeveelheid waarden opslaan, zolang deze variabelen van hetzelfde type zijn. Een ArrayList zelf is een variabele met een variabelenaam. De waarden IN de ArrayList worden de elementen van de ArrayList genoemd. De elementen zijn bereikbaar met een indexnummer.
Let op! het eerste element heeft indexnummer 0.
Met een ArrayList heb je dus meerdere elementen onder één variabelenaam tot je beschikking. Met een Arraylist kun je een programma schrijven waarin het aantal elementen groeit en daalt en je alle bewerkingen kunt uitvoeren ongeacht de lengte van de lijst.
Een ArrayList is meer dan een lijst. Iedere variabele van het type Arraylist heeft een aantal methodes die je kunt gebruiken om de lijst te bewerken. Deze methodes staan op een rij in de Java documentatie van ArrayLists Hieronder volgen een aantal voorbeelden:
Toevoegen van een element aan de lijst met de methode add();
studentNames.add("Peter");
Het argument van de methode add() is de waarde die wordt opgeslagen als nieuw element aan het eind van de lijst. Het type van dit argument hangt af van het type ArrayList. In dit voorbeeld is studentNaam een ArrayList van Strings. In het volgende voorbeeld zien we een ArrayList van integers:
groupSizes.add(24);
Opvragen van het aantal elementen in de ArrayList met de methode size():
studentNames.size();
De methode size() heeft geen argument en returnt een integerwaarde.
Opvragen van de waarde van een element met de methode get();
studentNames.get(178);
Het argument van de methode get() is een integer en het is het indexnummer van het element dat je opvraagt. De returnwaarde is de waarde van dat specifieke element en het type hangt dus af van het type van de ArrayList. Bovenstaand voorbeeld zal dus een String returnen. Het volgende voorbeeld zal een integer returnen:
groupSizes.get(3);
Let op! Met het indexnummer 2 wordt het derde element opgevraagd
Er zijn nog veel meer methodes beschikbaar voor een ArrayList, deze kun je vinden in de javadoc.
Een ArrayList wordt gedeclareerd met het keyword new
Dit plaatje vergelijkt de declaratie van een ArrayList met die van een eenvoudige variabele:
Tussen de hoekige haken <> staat het type van de elementen in de nieuw aan te maken ArrayList. Deze worden volluit geschreven met een hoofdletter. Zie de voorbeelden hieronder:
ArrayList<String> studentNames = new ArrayList<String>();
ArrayList<Double> temperatures = new ArrayList<Double>();
ArrayList<Integer> customerIDs = new ArrayList<Integer>();
ArrayList<Boolean> atHomeList = new ArrayList<Boolean>();
ArrayList<Character> groupCodes = new ArrayList<Character>();
Java staat het ook toe dat je de tweede haken leeg laat:
ArrayList<String> studentNames = new ArrayList<>();
Er is een beperking bij het gebruik van ArrayLists, en dat is dat er geen
zogenaamde primitieve waarden in mogen worden opgeslagen. Dat betekent
dat je geen int
, double
, boolean
, char
enz kunt gebruiken! Waarom
dat precies zo is, hoef je nu niet te weten, maar in plaats van int
, double
, enz.,
gebruik je de zogenaamde “Boxed” varianten van deze types. Je schrijft deze types
met een hoofdletter en voluit:
int
wordt Integer
char
wordt Character
boolean
wordt Boolean
double
wordt Double
Dus dit kan niet:
ArrayList<int> numbers = new ArrayList<>();
In plaats daarvan gebruik je:
ArrayList<Integer> numbers = new ArrayList<>();
// Voeg snel een paar elementen toe met Arrays.asList()
ArrayList<Integers> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
// Vervang de waarde op positie 0 met een nieuwe waarde.
numbers.set(0, 5);