Kotlin 數據結構分析
1. 列表(List)
- 特性:
- 有序集合,允許重複元素
- 不可變:
listOf() - 可變:
mutableListOf()(默認實現為ArrayList)
- 時間複雜度:
- 隨機訪問:
- 末尾插入:
(攤銷時間)
- 中間插入/刪除:
- 使用場景:
val immutableList = listOf("A", "B", "C") // 只讀
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4) // 動態修改
2. 集合(Set)
- 特性:
- 無序,元素唯一(基於
hashCode()和equals()) - 不可變:
setOf() - 可變:
mutableSetOf()(默認LinkedHashSet)
- 變體:
HashSet:無序,最快操作LinkedHashSet:保留插入順序TreeSet:有序(基於紅黑樹)
- 時間複雜度:
- 添加/刪除/查找:平均
(
HashSet),最壞 TreeSet操作:
- 使用場景:
val uniqueNumbers = setOf(1, 2, 2, 3) // 結果為 [1, 2, 3]
3. 映射(Map)
- 特性:
- 鍵值對集合,鍵唯一
- 不可變:
mapOf() - 可變:
mutableMapOf()(默認LinkedHashMap)
- 變體:
HashMap:無序,高效哈希LinkedHashMap:保留插入順序TreeMap:按鍵排序
- 時間複雜度:
- 添加/刪除/查找:平均
(
HashMap) TreeMap操作:
- 使用場景:
val map = mapOf("Kotlin" to 2011, "Java" to 1995)
val mutableMap = mutableMapOf("A" to 1)
mutableMap["B"] = 2 // 動態添加
4. 數組(Array)
- 特性:
- 固定大小,類型確定(如
Array<T>、IntArray) - 高效內存佈局(原始類型數組無裝箱開銷)
- 時間複雜度:
- 訪問/修改:
- 大小調整:不支持(需創建新數組)
- 使用場景:
val intArray = intArrayOf(1, 2, 3) // 原始類型數組
val objArray = arrayOf("A", "B") // 對象數組
5. 序列(Sequence)
- 特性:
- 惰性求值(類似 Java Stream)
- 無中間集合生成(節省內存)
- 時間複雜度:
- 操作鏈:
(單次遍歷)
- 使用場景:大數據處理管道
val result = (1..1_000_000).asSequence()
.filter { it % 2 == 0 }
.map { it * 2 }
.take(10)
.toList() // 僅計算前10個元素
性能對比總結
|
數據結構
|
隨機訪問
|
插入/刪除
|
內存開銷
|
適用場景
|
|
|
|
|
低
|
高頻訪問,少修改
|
|
|
|
|
中
|
快速去重
|
|
|
|
|
中
|
鍵值查詢
|
|
|
|
不支持
|
最低
|
固定大小數據
|
|
|
|
不支持
|
極低
|
大數據流處理
|
設計原則:
- 優先選擇不可變集合(線程安全)
- 高頻修改用
Mutable變體- 大數據操作用
Sequence避免中間集合
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。