这一定是一个非常愚蠢的问题,但是在我发现的教程中,它们通常打印一个集合的所有值。如果我只想要与键相对应的值怎么办?抱歉,我是Kotlin的新手,一般是OOP。
所以:
val words = listOf("a", "abc", "ab", "def", "abcd")
val byLength = words.groupBy { it.length }
println(byLength.keys) // [1, 3, 2, 4]
println(byLength.values) // [[a], [abc, def], [ab], [abcd]]
如何仅访问[abc, def]
给定关键3
?
println(byLength[3])
和访问abc
和def
您可以做
val tab = byLength[3]!!
println(tab[0]) // abc
println(tab[1]) // def
groupBy
返回地图。您使用[]
操作员从地图中获得值:
byLength[3]
byLength[3]
这就是您将其索引到Kotlin中的地图。
groupBy
返回 Map
,在这种情况下是 Map<Int, List<String>>
。如果您需要与给定密钥关联的值,则可以使用get
方法(也可以称为操作员(:
val v1: List<String>? = byLength.get(3)
val v2: List<String>? = byLength[3]
另外,有getOrDefault
可为您提供不可删除的结果:
val v3: List<String> = byLength.getOrDefault(3, emptyList())