Kotlin中的集合(Collection)

本文介绍了Kotlin中的三种集合类型:Array(数组)、Set(集合)和Map(集合)。Array是有序可重复的,大小固定且元素类型不可变。Set则为无序不重复,同样大小固定且元素不变。Map是无序可重复的集合,重点讲解了各种集合的定义、常见操作以及转换方法,如去重、交集、差集、并集等。

集合类型

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值