Junior — Middle
Milyen kulcsadat típusok megengedettek egy hash-táblában való használatra?
sobes.tech MI
Válasz az MI-től
A hash-táblákban (például Dartban, amit Flutterben használnak) a kulcsok bármilyen típusú objektumok lehetnek, feltéve, hogy helyesen valósítják meg a hashCode és == metódusokat. Ez szükséges a helyes hash-érték kiszámításához és a kulcsok összehasonlításához.
Általában primitív típusokat használnak, mint a stringek (String), számok (int), de egyedi osztályokat is lehet használni, ha ezeket a metódusokat felülírják. Például:
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] = 'Fejlesztő';
print(map[p]); // Fejlesztő
}
Ezért a kulcsoknak változatlannak kell lenniük, és helyesen kell megvalósítaniuk a hashCode és == metódusokat.