Junior — Middle
Kokie raktinių duomenų tipai leidžiami naudoti maišos lentelėje?
sobes.tech AI
Atsakymas iš AI
Heshų lentelėse (pavyzdžiui, Dart, naudojamas Flutter) raktai gali būti bet kokio tipo objektai, jei jie teisingai įgyvendina hashCode ir == metodus. Tai būtina teisingam hash reikšmės apskaičiavimui ir raktų palyginimui.
Dažniausiai naudojami pirminiai tipai, tokie kaip eilutės (String), skaičiai (int), tačiau galima naudoti ir naudotojo apibrėžtus klases, jei šie metodai yra perrašyti. Pavyzdžiui:
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] = 'Kūrėjas';
print(map[p]); // Kūrėjas
}
Todėl raktai turi būti nekintami ir teisingai įgyvendinti hashCode ir == metodus.