Sobes.tech
Junior — Middle

Koje vrste ključnih podataka su dozvoljene za korišćenje u hash tabeli?

sobes.tech АИ

Одговор од АИ

U hash tabelama (na primer, u Dart-u koji se koristi u Flutter-u) ključevi mogu biti objekti bilo kog tipa, pod uslovom da ispravno implementiraju metode hashCode i ==. Ovo je neophodno za pravilno računanje hash vrednosti i poređenje ključeva.

Obično se koriste primitivni tipovi, kao što su stringovi (String), brojevi (int), ali se mogu koristiti i prilagođene klase ako ove metode budu prepisane. Na primer:

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] = 'Programer';
  print(map[p]); // Programer
}

Dakle, ključevi moraju biti nepromenljivi i imati pravilno implementirane metode hashCode i ==.