De opdracht is om de klasse HashTabel.java
hieronder aan te vullen zodat alle unittesten slagen. HashTabel.java
is dan ook het enige bestand dat je mag aanpassen. Gebruik gesloten adressering om met collisions om te gaan.
HashTabel.java
slaat sleutel-waarden-paren op. Bijvoorbeeld voor een museum-archief-systeem:
label museumstuk -> uitleg museumstuk
"idkopw" -> "Een speer van 200 jaar oud"
"poridg" -> "Een aarden pot uit 1400"
"qwnmer" -> "Een stuk perkament uit de klassieke oudheid"
...
In HashTabel.java
worden de sleutel en waarden voorgesteld door respectievelijk Sleutel
en Waarde
objecten. Deze worden samen bewaard in een Paar
objecten. Die worden dan op hun beurt opgeslagen in de inwendige tabel:
Voor de inwendige tabel gebruiken we de bestaande ArrayList
klasse die standaard wordt meegeleverd met de java JDK. Je vindt de API van deze klasse op https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/ArrayList.html1.
Implementeer de volgende functies:
public void voegToe(Sleutel sleutel, Waarde waarde)
: Voegt een sleutel-waarde paar toe aan de hashtabel. Als de sleutel er al inzit,
wordt de waarde die bij die sleutel hoort geupdatet met de nieuwe waarde. Gooit een RuntimeException()
als er geen plaats meer is in de hashtabel.public Waarde zoekOp(Sleutel sleutel)
: Zoekt de waarde op die bij een bepaalde sleutel hoort. Geeft null
terug wanneer de sleutel niet in de hashtabel zit.
De unit tests en de nodige klassen voor de unit tests vindt je hieronder. Deze kan je gebruiken om het in Eclipse op te lossen (vergeet daarna wel niet de code hier in te dienen).