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 և == մեթոդները։