Sobes.tech
Junior — Middle

Değiştirilebilir özelliklere sahip bir veri sınıfı, bir karma tablo anahtarı olarak kullanılabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Değiştirilebilir özelliklere sahip bir veri sınıfını anahtar olarak kullanmak önerilmez. Hash tablosundaki anahtarlar değiştirilemez olmalıdır, çünkü nesnenin özelliklerini değiştirmek, hash kodu veya karşılaştırma üzerinde etkili olup, öğeye erişimi kaybetmenize neden olabilir.

Örneğin, data sınıfının bir özelliği hashCode veya equals üzerinde etkiliyse, nesne artık hash tablosunda bulunmayabilir:

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" // Özelliği değiştiriyor

println(map[user]) // null dönebilir, çünkü hashCode değişti

Bu nedenle, değiştirilemez nesneleri veya değiştirilemez özelliklere sahip anahtarları kullanmak daha iyidir.