Sobes.tech
Junior — Middle

Hash cədvəlində istifadə üçün hansı açar növü məlumatlar icazə verilir?

sobes.tech Süni İntellekt

AI-dan cavab

Hash cədvəllərində (məsələn, Flutter-də istifadə olunan Dart-da) açarlar hər hansı bir növ obyekt ola bilər, şərt odur ki, onlar hashCode== metodlarını düzgün şəkildə həyata keçirirlər. Bu, düzgün hash dəyərinin hesablanması və açarların müqayisəsi üçün vacibdir.

Ən çox istifadə olunan növlər primitiv tiplərdir, məsələn, sətirlər (String), ədədlər (int), lakin bu metodlar yenidən yazılırsa, xüsusi sinflər də istifadə oluna bilər. Məsələn:

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] = 'İnkişafçı';
  print(map[p]); // İnkişafçı
}

Buna görə, açarlar dəyişməz olmalı və hashCode== metodları düzgün şəkildə həyata keçirilməlidir.