Junior — Middle
Ce tipuri de date cheie sunt permise pentru utilizarea într-un tabel hash?
sobes.tech AI
Răspuns de la AI
În tabelele hash (de exemplu, în Dart, utilizat în Flutter), cheile pot fi obiecte de orice tip, cu condiția să implementeze corect metodele hashCode și ==. Acest lucru este necesar pentru calcularea corectă a valorii hash și compararea cheilor.
De obicei, se folosesc tipuri primitive, cum ar fi șiruri (String), numere (int), dar se pot folosi și clase personalizate dacă aceste metode sunt suprascrise. De exemplu:
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] = 'Dezvoltator';
print(map[p]); // Dezvoltator
}
Prin urmare, cheile trebuie să fie imutabile și să aibă metode hashCode și == implementate corect.