Junior — Middle
Kādi galvenes datu tipi ir atļauti lietošanai haštabulā?
sobes.tech AI
Atbilde no AI
Hesh tabulās (piemēram, Dart, kas tiek izmantots Flutter) atslēgas var būt jebkura veida objekti, ja tie pareizi īsteno hashCode un == metodes. Tas ir nepieciešams pareizai hēša vērtības aprēķināšanai un atslēgu salīdzināšanai.
Parasti tiek izmantoti primitivie tipi, piemēram, virknes (String), skaitļi (int), bet var izmantot arī lietotāja definētas klases, ja šīs metodes tiek pārrakstītas. Piemēram:
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] = 'Izstrādātājs';
print(map[p]); // Izstrādātājs
}
Tādēļ atslēgas jābūt nemainīgām un jābūt pareizi īstenotām hashCode un == metodēm.