Avatar ·

为什么Kotlin的List没有add和remove方法,而Map没有put方法?

大家好!我刚开始学习Kotlin,从Java转过来,遇到了一个令人困惑的情况。在Java中,我们习惯使用ArrayList、HashMap,并可以轻松调用list.add()、map.put()等方法。但在Kotlin中,当我编写: ```kotlin val myList = listOf(1, 2, 3) myList.add(4) // 错误:未解析的引用:add val myMap = mapOf("a" to 1, "b" to 2) myMap.put("c", 3) // 错误:未解析的引用:put ``` 编译器报错说没有这些方法。我尝试使用mutableListOf和mutableMapOf——那里add和put可以工作。但为什么普通的listOf和mapOf没有这些方法?这是语言bug吗?还是我误解了Kotlin的哲学? 请告诉我,在Kotlin中如何正确处理集合,如果有时需要添加元素,有时只需读取数据?另外,这些“mutable”和“immutable”到底是什么意思?提前感谢! <<>>

简短回答:可变集合与不可变集合的区别

在Kotlin中,集合分为两种类型: