Kotlin 數據結構分析

1. 列表(List)
  • 特性
  • 有序集合,允許重複元素
  • 不可變:listOf()
  • 可變:mutableListOf()(默認實現為 ArrayList
  • 時間複雜度
  • 隨機訪問:【Kotlin -- 知識點】數據類型_12348040的技術博客_使用場景
  • 末尾插入:【Kotlin -- 知識點】數據類型_12348040的技術博客_使用場景(攤銷時間)
  • 中間插入/刪除:【Kotlin -- 知識點】數據類型_12348040的技術博客_#python_03
  • 使用場景
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:有序(基於紅黑樹)
  • 時間複雜度
  • 添加/刪除/查找:平均 【Kotlin -- 知識點】數據類型_12348040的技術博客_使用場景HashSet),最壞 【Kotlin -- 知識點】數據類型_12348040的技術博客_#python_03
  • TreeSet 操作:【Kotlin -- 知識點】數據類型_12348040的技術博客_#數據結構_06
  • 使用場景
val uniqueNumbers = setOf(1, 2, 2, 3) // 結果為 [1, 2, 3]

3. 映射(Map)
  • 特性
  • 鍵值對集合,鍵唯一
  • 不可變:mapOf()
  • 可變:mutableMapOf()(默認 LinkedHashMap
  • 變體
  • HashMap:無序,高效哈希
  • LinkedHashMap:保留插入順序
  • TreeMap:按鍵排序
  • 時間複雜度
  • 添加/刪除/查找:平均 【Kotlin -- 知識點】數據類型_12348040的技術博客_使用場景HashMap
  • TreeMap 操作:【Kotlin -- 知識點】數據類型_12348040的技術博客_#數據結構_06
  • 使用場景
val map = mapOf("Kotlin" to 2011, "Java" to 1995)
val mutableMap = mutableMapOf("A" to 1)
mutableMap["B"] = 2 // 動態添加

4. 數組(Array)
  • 特性
  • 固定大小,類型確定(如 Array<T>IntArray
  • 高效內存佈局(原始類型數組無裝箱開銷)
  • 時間複雜度
  • 訪問/修改:【Kotlin -- 知識點】數據類型_12348040的技術博客_使用場景
  • 大小調整:不支持(需創建新數組)
  • 使用場景
val intArray = intArrayOf(1, 2, 3) // 原始類型數組
val objArray = arrayOf("A", "B")   // 對象數組

5. 序列(Sequence)
  • 特性
  • 惰性求值(類似 Java Stream)
  • 無中間集合生成(節省內存)
  • 時間複雜度
  • 操作鏈:【Kotlin -- 知識點】數據類型_12348040的技術博客_#python_03(單次遍歷)
  • 使用場景:大數據處理管道
val result = (1..1_000_000).asSequence()
    .filter { it % 2 == 0 }
    .map { it * 2 }
    .take(10)
    .toList() // 僅計算前10個元素

性能對比總結

數據結構

隨機訪問

插入/刪除

內存開銷

適用場景

ArrayList


高頻訪問,少修改

HashSet


快速去重

HashMap


鍵值查詢

Array

不支持

最低

固定大小數據

Sequence

不支持

極低

大數據流處理

設計原則

  • 優先選擇不可變集合(線程安全)
  • 高頻修改用 Mutable 變體
  • 大數據操作用 Sequence 避免中間集合