Maps

Gegevenstypen en uitzonderingen in Java

Jim White

Java Developer

Maps zijn opzoektabellen

  • Maps fungeren als opzoektabellen
    • Sla een "value" op bij een specifieke "key"
    • Gebruik de "key" om de opgeslagen "value" op te halen
  • Voorbeeld: huisarts bellen
    • Ze zoeken je dossier (de value) op met naam/geboortedatum (de key)

Maps werken als opzoektabel, zoals bij de huisarts waar je naam en geboortedatum nodig zijn om je dossier te vinden

Gegevenstypen en uitzonderingen in Java

Map-interface

  • De Map-interface definieert bewerkingen op key/value-paren
    • Hoe je een value "put" bij een specifieke key
    • Hoe je de value bij een key uit de Map "remove"t
    • Hoe je de value ophaalt met een key
  • Er zijn meerdere Map-implementaties met vergelijkbaar gedrag
    • Een populaire implementatie is HashMap
1 Zie https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html voor details
Gegevenstypen en uitzonderingen in Java

HashMap-keys en -values

Keys en values in een Map of HashMap kunnen hetzelfde of verschillende types zijn

Gegevenstypen en uitzonderingen in Java

HashMap maken

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • De generieke constructor van HashMap vereist twee types

    • Het eerste type = het key-type

      De eerste generieke parameter van HashMap is voor de keys

    • Het tweede type = het value-type

      De tweede generieke parameter van Hashmap is voor de values

Key- en value-types in generics bepalen het datatype voor keys en values

  • Vereist import van java.util.HashMap
Gegevenstypen en uitzonderingen in Java

HashMap-methoden

  • Gebruik .put(key,value) om een key/value-paar toe te voegen
  • Gebruik .remove(key) om het paar bij die key te verwijderen
  • Gebruik .get(key) om de value bij de key op te halen
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Gegevenstypen en uitzonderingen in Java

Collections

  • java.util.Collections is een hulpfunctieklasse
  • Handig voor sorteren, vullen, kopiëren, zoeken, enz.
    • Bevat alleen static-methoden
1 Zie https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Gegevenstypen en uitzonderingen in Java

Collection-methoden

  • Voeg meerdere objecten toe aan een List
    • addAll(List list, Object a, b, ...)
  • Geef het aantal keer dat een object voorkomt
    • frequency(Collection c, Object o)
  • Keer de volgorde om in een List
    • reverse(List list)
  • Sorteer objecten in een List
    • sort(List list)
  • Vervang alle items in een List door één object
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Gegevenstypen en uitzonderingen in Java

Arrays

  • Soms wil je een array (bijv. int[]) omzetten naar een List
    • Java-arrays zijn niet resizebaar; je wilt soms groeien/krimpen
    • List kan meer (zoeken, sorteren, enz.)
  • java.util.Arrays is een andere helperklasse
    • Maakt omzetten van een Java-array naar een List mogelijk
Gegevenstypen en uitzonderingen in Java

Arrays-voorbeeld

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Gegevenstypen en uitzonderingen in Java

Laten we oefenen!

Gegevenstypen en uitzonderingen in Java

Preparing Video For Download...