How to convert List to Map in Kotlin?
例如,我有一个字符串列表,比如:
1 | val list = listOf("a","b","c","d") |
我想把它转换成一个映射,其中字符串是键。
我知道我应该使用
您有两个选择:
第一个也是最具性能的是使用
1 | val map = friends.associateBy({it.facebookId}, {it.points}) |
第二个性能较差的功能是使用标准的
1 | val map = friends.map { it.facebookId to it.points }.toMap() |
号
1。从
对于kotlin 1.3,
1 | fun <T, K, V> Iterable<T>.associate(transform: (T) -> Pair<K, V>): Map<K, V> |
Returns a
Map containing key-value pairs provided bytransform function applied to elements of the given collection.
号
用途:
1 2 3 4 5 6 7 8 9 | class Person(val name: String, val id: Int) fun main() { 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。从
对于Kotlin,
1 | fun <T, K, V> Iterable<T>.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map<K, V> |
Returns a
Map containing the values provided byvalueTransform and indexed bykeySelector functions applied to elements of the given collection.
号
用途:
1 2 3 4 5 6 7 8 9 | class Person(val name: String, val id: Int) fun main() { 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} } |
。
您可以使用
1 2 | val list = listOf("a","b","c","d") val m: Map<String, Int> = list.associate { it to it.length } |
。
在本例中,来自
在RC版本上已经改变了。
我用的是
例如,您有如下字符串列表:
1 | val list = listOf("a","b","c","d") |
您需要将它转换为一个映射,其中字符串是键。
有两种方法可以做到这一点:
第一个也是最具性能的是使用associateBy函数,该函数使用两个lambda来生成键和值,并在创建映射时输入:
1 | val map = friends.associateBy({it.facebookId}, {it.points}) |
第二个性能较低的方法是使用标准映射函数创建一个对列表,to map可以使用该列表生成最终映射:
1 | val map = friends.map { it.facebookId to it.points }.toMap() |
号
资料来源:https://hype.codes/how-convert-list-map-kotlin