В идиоматическом выражении c Kotlin это будет выглядеть так:
val keys: List<String> = listOf("key1", "key2", "key3")
val values: List<String> = listOf("value1", "value2", "value3")
val result = keys.zip(values).map { hashMapOf(it) }
(запускаемая демонстрация)
Здесь , hashMapOf(...)
принимает пары (Pair<K, V>
), и это именно те элементы, которые создает zip
.
В качестве альтернативы, вы можете использовать перегрузку zip
, которая принимает лямбду и отображает пары без дополнительного вызова на map
:
val result = keys.zip(values) { k, v -> hashMapOf(k to v) }
(запускаемая демонстрация)
Результатом является список карты, каждая из которых содержит один ключ, сопоставленный со значением.
Другой вариант - создать одну карту, содержащую все пары, которые можно создать следующим образом:
val result = HashMap(keys.zip(values).toMap())
(демонстрационная версия)