Sobes.tech
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.