Junior — Middle
Peut-on utiliser une classe de données avec des propriétés modifiables comme clé dans une table de hachage?
sobes.tech IA
Réponse de l'IA
Il n'est pas recommandé d'utiliser une classe de données avec des propriétés modifiables comme clé dans une table de hachage. Les clés dans les tables de hachage doivent être immuables, car modifier les propriétés d'un objet participant au calcul du hash ou à la comparaison peut entraîner la perte d'accès à l'élément.
Par exemple, si une propriété de la classe data change, affectant hashCode ou equals, l'objet ne sera plus trouvé dans la table de hachage:
data class User(var id: Int, var name: String)
val map = hashMapOf<User, String>()
val user = User(1, "Alice")
map[user] = "Developer"
user.name = "Bob" // Modification de la propriété
println(map[user]) // Peut retourner null, car hashCode a changé
Il est donc préférable d'utiliser des objets immuables ou des clés avec des propriétés immuables.