у некоторых коллекций (например HashSet, HashMap) сперва сравнивает hashCode(), и только если hashCode совпали вызывает equals(). Причём значение запоминается при добавлении, если потом hashCode() поменялся то может не найти даже сам объект
class BadHashCode {
var i = 0;
override fun hashCode() = i;
override fun equals(other: Any?) = true
}
fun main() {
val badHashCode = BadHashCode()
val map = hashSetOf(badHashCode)
badHashCode.i++;
println(map.contains(badHashCode))//false
}
> сперва сравнивает hashCode(), и только если hashCode совпали вызывает equals()
в случае с HashMap не совсем верно, equals отрабатывает только когда есть колизии hashCode