为什么在 Kotlin 中 List 没有 add() 和 remove() 方法,而 Map 没有 put() 方法?
你好!我刚从 Java 开始学习 Kotlin,遇到了一个令人困惑的情况。在 Java 中,我习惯这样操作列表:
```kotlin
val list = ArrayList()
list.add("Привет") // 在 Java 中这是可行的
```
但在 Kotlin 中,当我尝试在普通的 `List` 上调用 `add()` 或 `remove()` 时,会收到编译错误。`Map` 也有同样的问题——`put()` 方法不可用。但如果我使用 `MutableList` 或 `MutableMap`,代码就能编译通过。
以下是一个无法工作的示例:
```kotlin
fun main() {
val fruits = listOf("Яблоко", "Банан")
fruits.add("Апельсин") // 错误:未解析的引用:add
val capitals = mapOf("Россия" to "Москва")
capitals.put("Франция", "Париж") // 错误:未解析的引用:put
}
```
为什么这样设计?将 `List` 和 `MutableList` 分开有什么意义?如何正确地添加/删除元素?我读过文档,但想理解这种方法的哲学。提前感谢你的解释!