抱歉,如果这是一个愚蠢的问题,因为我很确定这是简单的,但我正在努力找到一个干净的方法来创建一个 map 从两个列表.

我很确定我可以做一个循环和遍历每一个,但我想判断是否有一种方法来做到这一点,是更有视觉吸引力.

例如:

val list1 = listOf("One", "Two", "Three")
val list2 = listOf(1, 2, 3)
//result would be => {One=1, Two=2, Three=3}

推荐答案

注意:这假设您已经判断了两个列表包含相同数量的元素.

您可以使用zip函数创建一个List<Pair<String, Int>>,然后使用toMap对结果的对列表.zip函数的结果列表将具有较小列表的大小.

val list1 = listOf("One", "Two", "Three")
val list2 = listOf(1, 2, 3)

val myMap = list1.zip(list2).toMap()

如果你需要在其中任一项上应用任何转换,你可以使用associate.例如,这里我们将字符串写入upper care并递增int.

val myMap = list1.zip(list2).associate { it.first.uppercase() to it.second + 1 }

Kotlin相关问答推荐

将基于注册的服务转换为流

如何为集成测试配置Gradle JVM测试套件?

"Kotlin中的表达式

Kotlin接口方法默认值&;可传递依赖项

在 Kotlin 中定义基于多态函数的泛型函数

init中的NPE抽象函数变量

Kotlin 启动与启动(Dispatchers.Default)

如何在 Hibernate Panache 中进行部分搜索

如何连接两个 kotlin 流?

奇怪的 cotlin check Not Null 参数错误

禁用 Android 12 默认启动画面

从列表中的每个对象中 Select 属性

runInTransaction 块内的挂起方法

Jetpack Compose – LazyColumn 不重组

使用 Kotlin 创建自定义 Dagger 2 范围

类型不匹配:推断类型为 LoginActivity 但应为 LifecycleOwner

在Kotlin中使用@Service时引发异常

如何序列化/反序列化Kotlin密封类?

Mocked suspend函数在Mockito中返回null

Android Studio - java.io.IOException:无法生成 v1 签名