Kotlin中的集合(Collection)

来源:互联网 发布:python 传参数 编辑:程序博客网 时间:2024/05/29 09:34

集合类型

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