Kotlin中的集合(Collection)
阿新 • • 發佈:2019-02-15
集合型別
Array(陣列)
- 有序可重複,索引從0開始
- 大小固定,元素型別不可變
- 定義:Array<泛型>(size,init)或者arrayOf(元素1,元素2,…,元素n)
通過兩種方式定義陣列
//定義一個數組,有型別推斷,也可以不寫泛型 var stations_8 = arrayOf("南鑼鼓巷", "什剎海", "鼓樓大街", "安德里北街", "安華橋", "北土城", "奧體公園", "奧林匹克公園", "森林公園南門", "什剎海", "鼓樓大街") //建立一個有預設值的陣列,Array(計數,{預設值}) var station_11 = Array(10, { "11號線的佔位符" }) //建立1到n陣列,Array(n,{i -> i + 1}) var oneToTen = Array(10, { i -> i + 1 })
- 常用方法
元素計數:count(),是否為空:isEmpty(),是否不為空:isNotEmpty()
stations_8.count()
stations_8.isEmpty()
stations_8.isNotEmpty()
去重:distinct(),或者toSet()轉換為Set集合
val stationNoRepeat = station_8.distinct()
陣列切割:sliceArray(i..j)
val smallStations = stations_8.sliceArray(2..3)
變為可變陣列:MutableList<型別>或mutableListOf(元素1,元素2,…,元素n)
var newStation_8 = mutableListOf("南鑼鼓巷", "什剎海", "鼓樓大街", "安德里北街")
在末尾新增元素:add(),新增另一個數組:addAll()
newStation_8.add("安華橋")
newStation_8.addAll(smallStations)
移除某個元素remove(),移除指定位置元素removeAt(),移除整個陣列內包含的元素:removeAll()
newStation_8.remove("安華橋") newStation_8.removeAt(0) newStation_8.removeAll(smallStations)
陣列中是否包含某個元素:contains
newStation_8.contains("什剎海")
Set(集合)
- 特性:無序不重複,大小固定,元素型別不可變
- 定義:Set<泛型>或setOf(元素1,元素2,…,元素n)
- 主要方法:交、差、並、補
定義三個Set集合,一條主線和兩條支線
val mainLine = setOf("迪士尼", "徐家彙", "桃浦新村", "南翔", "馬陸", "嘉定新城")
val subLineJd = setOf("嘉定新城", "嘉定西", "嘉定北")
val subLineKs = setOf("嘉定新城", "上海賽車場", "安亭", "花橋")
計數:count(),是否為空:isEmpty(),是否不為空:isNotEmpty()
mainLine.count()
mainLine.isEmpty()
mainLine.isNotEmpty()
包含某個元素contains(),包含某個Set集合內全部資料:containsAll()
mainLine.contains("迪士尼")
mainLine.containsAll(subLineJd)
將集合轉化為陣列:
mainLine.toTypeArray()
集合之間的運算:intersect(交集),subtract(差集),union(並集),minus(補集),返回結果是一個新的Set集合
mainLine.intersect(subLineJd)
mainLine.subtract(subLineJd)
mainLine.union(subLineJd)
mainLine.minus(subLineJd)
將不可變陣列轉化為可變陣列:toMutableSet()
val mutableMainLine = mainLine.union(subLineJd).union(subLineKs).toMutableSet()
mutableMainLine.add("光明路")
val newLines = setOf("昌吉東路","上海汽車城")
mutableMainLine.addAll(newLines)
移除某個元素:remove(),移除一個集合:removeAll()
mutableMainLine.remove("光明路")
mutableMainLine.removeAll(newLines)
Map(集合)
- 集合型別:無序可重複
- 定義:mapOf