kotlin集合分为两种类型:只读和可变
创建与获取
fun main() {
val list = listOf<String>("jason", "jack", "dog")
//数组越界 异常
print(list[3])
//getOrElse是一个安全索引取值函数,第一个参数:索引值 第二个参数:是能够提供默认值的lambda表达式
//如果索引值不存在,使用异常代替
print(list.getOrElse(3){"unKnown"})
//返回null,而不是抛出异常
print(list.getOrNull(3)?:"unKnown")
}
复制代码
创建mutableList 可变列表
//创建可变列表
val mutableListOf = mutableListOf("jason", "jack", "dog")
mutableListOf.add("cat")
mutableListOf.remove("jack")
复制代码
kotlin中支持内容修改的列表叫做可变列表,可以使用mutableListOf函数。list还支持使用toList和toMutableList动态实现 只读列表和可变列表的相互转换
//转换为只读列表
val toList = mutableListOf.toList()
复制代码
mutator函数:
能修改可变列表的函数有一个统一的名字:mutator函数
//能修改可变列表的函数有一个统一的名字:mutator函数
mutableListOf += "Jimmy"//添加jimmy
mutableListOf -= "Jimmy"//移除jimmy
//如果list中的元素包含dog 则移除
mutableListOf.removeIf { it.contains("dog") }
复制代码
遍历(三种方式)
//for in 遍历
for(s in list2){
println(s)
}
//forEach遍历
list2.forEach {
print(it)
}
//forEachIndexed遍历时获取索引
list2.forEachIndexed { index, item ->
print("$index, $item")
}
复制代码
解构
val list2 = listOf("j", "k", "l")
//给括号中的元素赋值
val (origin: String, dext: String, proxy: String) = list2
//使用 _ 表示跳过这个元素的赋值
val (origin1: String, _: String, proxy1: String) = list2
//打印赋值后的字符串
print(origin+dest+proxy)
复制代码
Set集合
创建和获取
val set = setOf("j", "k", "c", "y")
//获取元素
val elementAt = set.elementAt(2)
复制代码
可变集合
val mutableSet = mutableSetOf("j", "k", "c", "y")
//修改集合中的值
mutableSet.add("m")
mutableSet.remove("m")
mutableSet += "n"
mutableSet -= "n"
复制代码
set与list的转换以及list的去重
//集合转换 set和list 转换
val toSet = listOf("a", "b", "c", "a").toSet() //转为set去重
val toList1 = toSet.toList() //再转回为list
//去重后打印
print(toList1)
//distinct 去重快捷函数
val distinct = listOf("a", "b", "c", "a").distinct()
复制代码
数组类型
//数组类型
val intArray = intArrayOf(10, 20, 30)
//list转数组
val toIntArray = listOf(10, 20, 30).toIntArray()
//创建数组
val arrayOf = arrayOf("1", "2", "3")
复制代码
map创建以及遍历
//map创建
//to是一个函数 返回pair类型
val mapOf = mapOf("jack" to 20, "wang" to 30, "liu" to 40)
//直接使用pair
mapOf(Pair("a", 1), Pair("b", 2))
//取值
val i = mapOf["jack"]
mapOf.getValue("jack")
mapOf.getOrElse("jack") { "unKnow" } //取不出来的话返回unKnow
mapOf.getOrDefault("jack", 0) //默认值为0
//遍历map
mapOf.forEach { t, u ->
print("$t,$u")
}
mapOf.forEach {
print(it.key + it.value)
}
复制代码
可变map
//可变map
val mutableMapOf = mutableMapOf("jack" to 20, "wang" to 30, "liu" to 40)
mutableMapOf += "jimmy" to 50
mutableMapOf["jimmy"] = 30
//没有获取到则添加(jack,18)
mutableMapOf.getOrPut("jack") {
18
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



















![[02/27][官改] Simplicity@MIX2 ROM更新-一一网](https://www.proyy.com/wp-content/uploads/2020/02/3168457341.jpg)



![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)