Как взорвать список в карте в kotlin? - PullRequest
1 голос
/ 24 сентября 2019

Представьте, что вы хотите преобразовать это:

val initialValues: List<Pair<String, String>>

, где первая строка представляет ключ, вторая - значение

в карту:

val finalMap: Map<String,String>

содержит каждый элемент пары дважды, первый с оригинальным ключом, второй с своего рода расширенным ключом.

Как бы вы это сделали?В настоящее время я использую

val finalMap = mutableMapOf<String, String>()

, который я использую, пока перебираю initialValues.Но мне действительно это не нравится.

initialValues.forEach {
    val explodedPairs:List<Pair<String,String>>  = <do-something> 

    explodedPairs.forEach { finalMap.put(it.first, it.second) }
}

как бы вы поступили более настойчиво?

Ответы [ 3 ]

5 голосов
/ 24 сентября 2019

Вы можете использовать associate / associateBy вот так -

val map1 = initialList.associate { it.first to it.second }
println(map1.toString()) //{1=x, 2=y}

val map2 = initialList.associateBy({it.first},{it.second})
println(map2.toString()) //{1=x, 2=y}

Вы также можете использовать toMap и сделать это -

val map3 = initialList.toMap()
println(map3.toString()) //{1=x, 2=y}

, где это мой initialListдекларация -

val initialList = listOf(Pair(1, "x"), Pair(2, "y"))
1 голос
/ 24 сентября 2019

Вы можете использовать Associate и Associateby

0 голосов
/ 24 сентября 2019

Вы можете использовать mapOf так:

val initialValues: List<Pair<String, String>> = listOf()
val final = mapOf(*initialValues.toTypedArray())

Но у @Supriya есть лучший ответ, используя toMap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...