Sobes.tech
Junior — Middle

Bir hash tablosunda kullanılmasına izin verilen anahtar veri türleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Hash tablolarında (örneğin, Flutter'da kullanılan Dart'ta) anahtarlar, hashCode ve == metodlarını doğru şekilde uygularlarsa, herhangi bir türde nesne olabilir. Bu, doğru hash değeri hesaplaması ve anahtarların karşılaştırılması için gereklidir.

Genellikle, dizgi (String), sayı (int) gibi temel türler kullanılır, ancak bu metodlar üzerine yazılırsa, özel sınıflar da kullanılabilir. Örneğin:

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] = 'Geliştirici';
  print(map[p]); // Geliştirici
}

Bu nedenle, anahtarlar değiştirilemez olmalı ve hashCode ile == metodları doğru şekilde uygulanmış olmalıdır.