在 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()