Sobes.tech
Junior — Middle

Jaké typy klíčových dat jsou povoleny pro použití v hash tabulce?

sobes.tech AI

Odpověď od AI

V hash tabulkách (například v Dart, používaném ve Flutteru) mohou být klíče objekty jakéhokoliv typu, za předpokladu, že správně implementují metody hashCode a ==. To je nutné pro správný výpočet hash hodnoty a porovnání klíčů.

Obvykle se používají primitivní typy, jako řetězce (String), čísla (int), ale lze použít i vlastní třídy, pokud jsou tyto metody přepsány. Například:

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] = 'Vývojář';
  print(map[p]); // Vývojář
}

Klíče by měly být neměnné a správně implementovat metody hashCode a ==.