Try   HackMD

Kotlin - 集合資料型態,List、Map、Set 集合

tags: Tag(Kotlin 筆記)

Java 和 Kotlin 差別

  • Kotlin 在宣告集合時就進行初始設定值,如同對陣列進行初始化那樣。
  • Java 無法同時宣告並進行初始設定值。

List、Map、Set 集合

Kotlin 中的 List、Map、Set 只能讀取,是無法進行修改,若需要可讀可寫,需使用 MutableList、MutableMap、MutableSet。

  • Set setOf 不可變 \ MutableSet mutableSetOf 可變
  • List listOf 不可變 \ MutableList mutableListOf 可變
  • Map mapOf 不可變 \ MutableMap mutableMapOf 可變

Set、List、Map 相同公共方法

  • isEmpty 是否為空
  • isNoEmpty 不可為空
  • clear 清除
  • contains 包含指定元素
  • iterator 反覆運算
  • count == size

集合分別說明:

Set / MutableSet

Set 唯讀 / MutableSet 可新增,不可修改

  • 特性:

    1. 不按順序排列,無法照索引值存取
    2. 元素存在唯一值,透過雜湊值驗證是否相同元素
  • MutableSet 可新增,不可修改

    1. add 只能放入陣列中,但無法知道方入位置
    2. remove 刪除指定元素,無法指定某個位置刪除
//Set 初始化 val set: Set<String> = setOf("小明", "小美", "小王") // MutableSet 初始化 var mutableSet: MutableSet<String> = mutableSetOf("小明", "小美", "小王")

List / MutableList

List / MutableList

  • 特性:

    1. 有序列性,透過get取得指定位置的元素
    2. 但修改需 MutableList
    3. indices 索引陣列
  • MutableList 新增、刪除、修改

    1. add 可以指定增加的位置,增加到陣列最後元素
    2. set 取代或修改指定位置的元素
    3. removeAt 刪除指定位置的元素
    4. sort 元素重新排序
    5. sortBy 指定條件升幕排列
    6. sortByDescending 指定條件降幕排列
//List val list: List<String> = listOf("iPhone", "Android", "ios") // MutableList var mutableList: MutableList<String> = mutableListOf("iPhone", "Android", "ios")

Map / MutableMap

  • 特性:

    1. Key-Value,key 唯一不能重覆。
    2. containsKey 是否存在指定Key的元素
    3. mapOf 初始化 [key to value]
  • MutableMap 新增、刪除、修改

    1. mutableMapOf 初始化 Pair(key, value)
    2. put 會先找key相同元素取代舊元素,找不到就新增元素
    3. remove key刪除指定元素
//mapOf 初始化 [key to value] val map: Map<String, String> = mapOf( "iPhone" to "1" , "Android" to "2", "ios" to "3") //MutableMapOf 初始化 Pair(key, value) var mutableMap: MutableMap<String, String> = mutableMapOf( Pair( "iPhone","1"), Pair( "Android","2"), Pair( "ios","3") )