Sobes.tech
Junior — Middle

რა ტიპის გასაღები მონაცემები იძლევა ჰეშ-ცხრილში გამოყენებას?

sobes.tech AI

პასუხი AI-სგან

ჰეშ-ცხრილებში (მაგალითად, Dart-ში, რომელიც Flutter-ში გამოიყენება) გასაღებები შეიძლება იყოს ნებისმიერი ტიპის ობიექტები, ოღონდ ისინი სწორად განახორციელებენ hashCode და == მეთოდებს. ეს აუცილებელია სწორი ჰეშ-ღირებულების გამოთვლის და გასაღებების შედარებისთვის.

ჩვეულებრივ, გამოიყენება პრიმიტიული ტიპები, როგორიცაა სტრინგები (String), რიცხვები (int), მაგრამ შესაძლებელია გამოყენება და მომხმარებლის მიერ შექმნილი კლასებიც, თუ ამ მეთოდებს გადაწერენ. მაგალითად:

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] = 'პროგრამისტი';
  print(map[p]); // პროგრამისტი
}

ამიტომ, გასაღებები უნდა იყოს უცვლელი და სწორად განხორციელებული hashCode და == მეთოდები უნდა ჰქონდეთ.