From dc53409220a748f288c10cb3e376cacc580fff42 Mon Sep 17 00:00:00 2001 From: atuzhilov Date: Fri, 18 Oct 2024 20:48:05 +0300 Subject: [PATCH 1/2] Logic for mapSwap.kt, NaturalList.kt and persons.kt has been added --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 15 ++++++++++----- .../kotlin/ru/otus/homework/mapswap/mapSwap.kt | 2 +- .../kotlin/ru/otus/homework/persons/persons.kt | 4 ++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index a8a41b1..8b199f1 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -35,14 +35,19 @@ class NaturalList(n: Int) : List { * Вернуть под-список этого списка, включая [fromIndex] и НЕ включая [toIndex] */ override fun subList(fromIndex: Int, toIndex: Int): List { - TODO("Not yet implemented") + val size = toIndex - fromIndex + val result = ArrayList(size) + for(index in fromIndex until toIndex){ + result.add(this[index]) + } + return result } /** * Returns true if list contains all numbers in the collection */ override fun containsAll(elements: Collection): Boolean { - TODO("Not yet implemented") + return elements.all { contains(it) } } override fun toString(): String { @@ -53,13 +58,13 @@ class NaturalList(n: Int) : List { * Функция должна возвращать true, если сравнивается с другой реализацией списка тех же чисел * Например, NaturalList(5) должен быть равен listOf(1,2,3,4,5) */ - override fun equals(other: Any?): Boolean = false + override fun equals(other: Any?): Boolean = this === other || other is List<*> /** * Функция должна возвращать тот же hash-code, что и список другой реализации тех же чисел * Например, NaturalList(5).hashCode() должен быть равен listOf(1,2,3,4,5).hashCode() */ - override fun hashCode(): Int = -1 + override fun hashCode(): Int = (1..size).toList().hashCode() } private class NaturalIterator(private val n: Int) : Iterator { @@ -88,4 +93,4 @@ private class NaturalListIterator(private val n: Int, index: Int = 0) : ListIter throw NoSuchElementException() } override fun previousIndex(): Int = index -} \ No newline at end of file +} diff --git a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt index 913be37..837e597 100644 --- a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt +++ b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt @@ -3,4 +3,4 @@ package ru.otus.homework.mapswap /** * Меняет местами ключи и значения */ -fun Map.swap(): Map = TODO("Доделать swap") \ No newline at end of file +fun Map.swap(): Map = entries.associate { it.value to it.key } diff --git a/src/main/kotlin/ru/otus/homework/persons/persons.kt b/src/main/kotlin/ru/otus/homework/persons/persons.kt index fc1265d..7784ecc 100644 --- a/src/main/kotlin/ru/otus/homework/persons/persons.kt +++ b/src/main/kotlin/ru/otus/homework/persons/persons.kt @@ -3,11 +3,11 @@ package ru.otus.homework.persons /** * Отсортировать список персон по возрасту в порядке убывания */ -fun List.sortByAge(): List = TODO("Доделать sortByAge") +fun List.sortByAge(): List = sortedByDescending { it.age } /** * Отсортировать список персон по фамилии * - Фамилии сортируются по алфавиту в порядке возрастания * - Если фамилии совпадают, персоны сортируются по имени в порядке возрастания */ -fun List.sortByName(): List = TODO("Доделать sortBySurname") \ No newline at end of file +fun List.sortByName(): List = sortedWith(compareBy({ it.surname }, {it.name})) From 6506e8dc792091796d0768421542318cacf2618e Mon Sep 17 00:00:00 2001 From: atuzhilov Date: Sun, 20 Oct 2024 14:55:39 +0300 Subject: [PATCH 2/2] equals method logic in NaturalList.kt has been fixed --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index 8b199f1..b59a6ab 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -58,7 +58,7 @@ class NaturalList(n: Int) : List { * Функция должна возвращать true, если сравнивается с другой реализацией списка тех же чисел * Например, NaturalList(5) должен быть равен listOf(1,2,3,4,5) */ - override fun equals(other: Any?): Boolean = this === other || other is List<*> + override fun equals(other: Any?): Boolean = (1..size).toList() == other /** * Функция должна возвращать тот же hash-code, что и список другой реализации тех же чисел