在 Kotlin 中,List 和 MutableList 是两种不同的集合接口,核心区别在于可变性。
Kotlin 集合框架的重要设计原则:通过接口分离只读(read - only)和可变(mutable)操作,以提高代码的安全性和可维护性。
List:是不可变集合接口(线程安全),一旦创建,其元素数量和元素内容都不能被修改。这种不可变有助于提高代码的安全性和可维护性,避免意外的数据修改。
val list = listOf("A", "B", "C")
list[0] = "X" // 编译错误!不允许修改
list.add("D") // 变异错误!没有 add 方法
MutableList:是可变集合接口,允许对集合中的元素进行添加、删除、修改等操作。这使得 MutableList 更加灵活,适用于需要动态改变集合内容的场景。
val mutableList = mutableListOf("A", "B", "C")
mutableList[0] = "X" // 允许修改
mutableList.add("D") // 允许添加
mutableList.removeAt(1) // 允许删除
只读 —> 可变:使用 toMutableList()
创建新的可变副本:
val list = listOf(1, 2, 3)
val mutableList = list.toMutableList() // 新对象
mutableList.add(4)
可变 —> 只读:使用 toList()
创建新的只读副本:
val mutable = mutableListOf(1, 2, 3)
val readOnly = mutable.toList()