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:

overzicht structuur hashtabel met open adressering

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:

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).