我有
data class Person(var name: String, var hobbies: List<String>)
val people = mutableListOf(
Person("joe", asList("biking", "baking")),
Person("jane", asList("baking")),
Person("jack", asList("painting"))
)
val map = mutableMapOf<String, List<String>>()
for ((name, hobbies) in people) {
for (hobby in hobbies) {
var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() })
peopleWithThisHobby.plus(name)
map[hobby] = peopleWithThisHobby
}
}
println(map)
Run Code Online (Sandbox Code Playgroud)
在线peopleWithThisHobby.plus(name),IntelliJ auto complete没有给我这个add()方法.
我不得不使用:
var peopleWithThisHobby = map.getOrElse(hobby, { mutableListOf() })
peopleWithThisHobby = peopleWithThisHobby.plus(name)
map[hobby] = peopleWithThisHobby
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?这是设计的吗?mutableList()在getOrElse通话中返回的内容发生了什么变化?
我正在使用Kotlin插件版本:1.1.3-eap-85-IJ2017.2-1
那是因为你的地图定义有一个List而不是MutableList值.改变它MutableList,它会工作.
val map = mutableMapOf<String, List<String>>()
Run Code Online (Sandbox Code Playgroud)
将以上内容更改为:
val map = mutableMapOf<String, MutableList<String>>()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |