Где может идти сравнение с помощью equals

«Где может идти сравнение с помощью equals» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android/Kotlin сравнение с equals() используется для проверки содержательного равенства объектов (значения полей), в отличие от ==, который в Kotlin проверяет ссылочное равенство (кроме примитивов).

Основные случаи:

  1. Сравнение строкstring1.equals(string2) или string1 == string2 (в Kotlin == автоматически вызывает equals()).
  2. Кастомные классы – переопределяйте equals() для логики сравнения:
data class User(val name: String) {
    override fun equals(other: Any?): Boolean {
        if (other !is User) return false
        return this.name == other.name
    }
}
  1. Коллекцииlist1 == list2 использует equals() для элементов.

Нюансы:

  • Всегда переопределяйте hashCode(), если переопределяете equals() (для корректной работы в HashMap/HashSet).
  • Для null-безопасности используйте equals() с other?.equals(x) ?: (x === null).