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 ==.