Ответ
В Android/Kotlin сравнение с equals() используется для проверки содержательного равенства объектов (значения полей), в отличие от ==, который в Kotlin проверяет ссылочное равенство (кроме примитивов).
Основные случаи:
- Сравнение строк –
string1.equals(string2)илиstring1 == string2(в Kotlin==автоматически вызываетequals()). - Кастомные классы – переопределяйте
equals()для логики сравнения:
data class User(val name: String) {
override fun equals(other: Any?): Boolean {
if (other !is User) return false
return this.name == other.name
}
}
- Коллекции –
list1 == list2используетequals()для элементов.
Нюансы:
- Всегда переопределяйте
hashCode(), если переопределяетеequals()(для корректной работы вHashMap/HashSet). - Для
null-безопасности используйтеequals()сother?.equals(x) ?: (x === null).