Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpDcEq 64 of 123 menu
◀ ▶

Сравнение объектов data class в Kotlin

В разделе про объекты в коде вы уже видели: у обычного класса == без equals ведёт себя как ===, а совпадение полей проверяли вручную. Для data class оператор == сравнивает значения свойств из заголовка. Два экземпляра с одинаковыми полями считаются равными, даже если созданы отдельными вызовами конструктора:

data class User(val name: String, val age: Int) fun main() { val a = User("Ann", 25) val b = User("Ann", 25) println(a == b) println(a === b) }

Если хотя бы одно поле отличается, результат == будет false. Оператор != даёт противоположный ответ:

data class Point(val x: Int, val y: Int) fun main() { val p1 = Point(1, 2) val p2 = Point(1, 3) println(p1 != p2) }

Компилятор генерирует equals и hashCode по тем же полям. Это важно, когда объекты кладут в Set или в ключи Map - дубликаты по содержимому не размножаются:

data class Tag(val code: String) fun main() { val set = setOf(Tag("go"), Tag("go")) println(set.size) }

Сделайте data class Item с полями sku и qty. Даны два объекта:

val left = Item("A1", 3) val right = Item("A1", 3)

Выведите на экран true, если объекты равны по ==, иначе false.

Сделайте data class PairNum с полями a и b. Создайте setOf из трёх элементов: PairNum(1, 2), PairNum(1, 2), PairNum(2, 1). Выведите на экран размер полученного множества.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить