Sobes.tech
Junior — Middle

Aké typy kľúčových údajov sú povolené na použitie v hash tabuľke?

sobes.tech AI

Odpoveď od AI

V hash tabulkách (napríklad v Dart, ktorý sa používa vo Flutteri) môžu byť kľúče objekty akéhokoľvek typu, za predpokladu, že správne implementujú metódy hashCode a ==. Toto je nevyhnutné pre správny výpočet hash hodnoty a porovnávanie kľúčov.

Zvyčajne sa používajú primitívne typy, ako reťazce (String), čísla (int), ale môžu sa použiť aj vlastné triedy, ak sú tieto metódy prepísané. Naprí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ár';
  print(map[p]); // Vývojár
}

Pretože kľúče musia byť nemenné a správne implementovať metódy hashCode a ==.