Sobes.tech
Junior — Middle

Welche Arten von Schlüsseldaten sind für die Verwendung in einer Hashtabelle zulässig?

sobes.tech KI

Antwort von AI

In Hash-Tabellen (z.B. in Dart, das in Flutter verwendet wird) können die Schlüssel Objekte beliebiger Typen sein, solange sie die Methoden hashCode und == korrekt implementieren. Dies ist notwendig, um den Hash-Wert korrekt zu berechnen und die Schlüssel zu vergleichen.

In der Regel werden primitive Typen wie Strings (String) und Zahlen (int) verwendet, aber es können auch benutzerdefinierte Klassen verwendet werden, wenn diese Methoden überschrieben werden. Zum Beispiel:

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

Daher müssen die Schlüssel unveränderlich sein und die Methoden hashCode und == korrekt implementieren.