Sobes.tech
Junior — Middle

Welke typen sleutelgegevens zijn toegestaan voor gebruik in een hash-tabel?

sobes.tech AI

Antwoord van AI

In hash-tabellen (bijvoorbeeld in Dart, dat in Flutter wordt gebruikt), kunnen de sleutels objecten van elk type zijn, op voorwaarde dat ze de methoden hashCode en == correct implementeren. Dit is nodig voor het juiste berekenen van de hash-waarde en het vergelijken van sleutels.

Meestal worden primitieve types gebruikt, zoals strings (String), nummers (int), maar je kunt ook aangepaste klassen gebruiken als deze methoden worden overschreven. Bijvoorbeeld:

class Person {
  final String name;
  final int id;

  Person(this.name, this.id);

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Person && runtimeType == other.runtimeType && id == other.id;

  @override
  int get hashCode => id.hashCode;
}

void main() {
  var map = <Person, String>{};
  var p = Person('Alice', 1);
  map[p] = 'Developer';
  print(map[p]); // Developer
}

Dus, sleutels moeten onveranderlijk zijn en correct geïmplementeerde hashCode en == methoden hebben.