Sobes.tech
Junior — Middle

Kan een niet-stringwaarde als sleutel in een object worden gebruikt?

sobes.tech AI

Antwoord van AI

In Java (en, in het bijzonder, in Android) kan de sleutel in standaardobjecten zoals HashMap een object van elke klasse zijn, niet noodzakelijk een string. Het belangrijkste is dat dit object correct de methoden equals() en hashCode() implementeert. Bijvoorbeeld, Integer, Enum of eigen klassen kunnen als sleutels worden gebruikt.

Voorbeeld:

Map<Integer, String> map = new HashMap<>();
map.put(1, "één");
map.put(2, "twee");

String value = map.get(1); // "één"

Echter, als je een gewoon object zonder overschrijven van equals en hashCode gebruikt, kan het gedrag onverwacht zijn, omdat sleutels op deze methoden worden vergeleken. In tegenstelling tot JavaScript, waar objectsleutels altijd worden geconverteerd naar string, kunnen in Java de sleutels in een Map elk object zijn.