Data Classes in Collections and as Map Keys
Use data classes in sets and maps leveraging structural equality.
Data Classes as Value Objects
Because data classes override equals and hashCode structurally, they work perfectly in sets and as map keys — unlike regular classes.
Regular Class: Bad Map Key
A regular class uses reference equality by default. Two equal-looking objects are different map keys.
class Key(val id: Int) // no equals/hashCode
val map = mutableMapOf<Key, String>()
val k1 = Key(1)
val k2 = Key(1) // same id, different object
map[k1] = "value"
println(map[k2]) // null! k2 != k1 by referenceAll lessons in this course
- Data Class Basics: Auto-generated Methods
- Copying with copy() and Partial Overrides
- Destructuring Declarations with componentN
- Data Classes in Collections and as Map Keys