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.