# Kotlin - 集合資料型態,List、Map、Set 集合 ###### tags: `Tag(Kotlin 筆記)` [TOC] ## 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 刪除指定元素,無法指定某個位置刪除 ```clike= //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 指定條件降幕排列 ```clike= //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刪除指定元素 ```clike= //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") ) ``` ---