Sobes.tech
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.