Ответы пользователя по тегу Kotlin
  • SetOf listOf mapOf записи аналогичны? Строка 1 -> setOf(this[0])?

    @Cheverikov_vv
    Java / Kotlin developer
    1. В текущей реализации именно так - listOf() создает ArrayList. Остальные методы создания экземпляров коллекций - аналогично.
    ссылка на документацию https://kotlinlang.ru/docs/reference/collections.html :
    В данный момент, метод listOf реализован с помощью ArrayList, но не исключено, что в будущем могут быть использованы другие типы коллекций, более эффективные по памяти за счёт своей неизменности.
    2. Строка 1 -> setOf(this[0]) означает, что для создания будет вызвана функция
    public fun setOf(element: T): Set = java.util.Collections.singleton(element)
    из пакета kotlin.collections.
    Ответ написан
    Комментировать
  • Как суммировать две коллекции по ключам и значениям?

    @Cheverikov_vv
    Java / Kotlin developer
    Предлагаю такую реализацию функции, которая позволяет сложить несколько экземпляров Map. Если необходимо что-то более универсальное (например со сложением не только Int) - посмотри в сторону generics.

    fun mapsSum(vararg maps: Map) = maps
    .map { it.toList() }.flatten() // Преобразуем все Map в список Pair
    .groupBy { it.first } // Группируем по уникальным ключам
    .map { (key, pairList) -> pairList.sumBy { it.second } } // Для каждого ключа считаем сумму

    fun main() {
    val firstABC = mutableMapOf(1 to 2, 2 to 5)
    val secondABC = mutableMapOf(1 to 5)

    println(mapsSum(firstABC, secondABC))
    }
    Ответ написан
    Комментировать