如何把List转换成Map in Kotlin?
例如,我有一个string列表,如:
val list = listOf("a", "b", "c", "d")
我想把它转换成一个映射,其中的string是关键。
我知道我应该使用.toMap()函数,但我不知道如何,我没有看到它的任何例子。
你有两个select:
第一个也是最高性能的是使用associateBy
函数,该函数使用两个lambdaexpression式来生成键和值,并内联创build地图:
val map = friends.associateBy({it.facebookId}, {it.points})
第二,性能较差的是使用标准的map
函数来创build一个Pair
对象列表,这个对象列表可以被toMap
用来生成最终的地图:
val map = friends.map { it.facebookId to it.points }.toMap()
#1。 从List
到associate
函数的Map
用Kotlin, List
有一个叫做associate
的函数。 associate
有以下声明:
fun <T, K, V> Iterable<T>.associate(transform: (T) -> Pair<K, V>): Map<K, V>
返回包含由应用于给定collection的元素的
transform
函数提供的键值对的Map
。
用法:
class Person(val name: String, val id: Int) fun main(args: Array<String>) { val friends = listOf(Person("Sue Helen", 1), Person("JR", 2), Person("Pamela", 3)) val map = friends.associate({ Pair(it.id, it.name) }) //val map = friends.associate({ it.id to it.name }) // also works println(map) // prints: {1=Sue Helen, 2=JR, 3=Pamela} }
#2。 从List
Map
到associateBy
函数
用Kotlin, List
有一个叫做associateBy
的函数。 associateBy
具有以下声明:
fun <T, K, V> Iterable<T>.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, V>
返回包含由
valueTransform
提供的值并由应用于给定collection的元素的keySelector
函数索引的keySelector
。
用法:
class Person(val name: String, val id: Int) fun main(args: Array<String>) { val friends = listOf(Person("Sue Helen", 1), Person("JR", 2), Person("Pamela", 3)) val map = friends.associateBy(keySelector = { person -> person.id }, valueTransform = { person -> person.name }) //val map = friends.associateBy({ it.id }, { it.name }) // also works println(map) // prints: {1=Sue Helen, 2=JR, 3=Pamela} }
RC版本已经改变了。
我正在使用val map = list.groupByTo(destinationMap, {it.facebookId}, { it -> it.point })
- 什么是Kotlin的Java静态方法的等价物?
- 如何在Kotlin中创build一个匿名类的抽象类的实例?
- Val和Var在Kotlin
- 用Kotlin在Android中创buildParcelable数据类有没有一种方便的方法?
- 参考Kotlin中特定实例的方法
- Kotlin二级构造函数
- Kotlin中的静态扩展方法
- Android Studio 3.0 – 无法find方法'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava / util / List'
- 什么Java 8 Stream.collect等价物在标准Kotlin库中可用?