Avatar ·

为什么在 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` 分开有什么意义?如何正确地添加/删除元素?我读过文档,但想理解这种方法的哲学。提前感谢你的解释!