1. 程式人生 > >Kotlin中的集合(Collection)

Kotlin中的集合(Collection)

集合型別

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