Kotlin基础 常用集合List、Set、Map的使用
集合是我们常用的一种数据结构,可以作为值传给函数,和我们学过的其他变量类型一样,List、Set、Map的类型分为两类,只读和可变。一.List集合1.List创建与元素获取getOrElse是一个安全索引取值函数,他需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。getOrNull是Kotlin提供的另一个安全索引取值函数,它返回nu
集合是我们常用的一种数据结构,可以作为值传给函数,和我们学过的其他变量类型一样,List、Set、Map的类型分为两类,只读和可变。
一.List集合
1.List创建与元素获取
getOrElse是一个安全索引取值函数,他需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。
getOrNull是Kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛出异常。
fun main() {
//listOf 创建不可变集合
val listOf = listOf("Jason", "Jack", "Jacky")
//超出索引值输出lambda表达式内容
println(listOf.getOrElse(3){"Unknown"})
//超出索引值输出null
println(listOf.getOrNull(3))
}
2.可变List集合
在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用mutableListOf函数。List还可以使用toList和toMutableList函数动态实现自读列表和可变列表的互换。
fun main() {
//mutableListOf 创建可变集合
val mutableList = mutableListOf("Jason", "Jack", "Jacky")
//添加一个元素
mutableList.add("XiaoHua")
//移除一个元素
mutableList.remove("XiaoHua")
//转不可变
val toList = mutableList.toList()
//转可变
val toMutableList = toList.toMutableList()
println(mutableList)
println(toList)
println(toMutableList)
}
3.mutator函数
能修改可变列表的函数有个统一的名字:mutator函数
fun main() {
//mutableListOf 创建可变集合
val mutableList = mutableListOf("Jason", "Jack", "Jacky")
//+= 与add一样效果
mutableList+="Jimmy"
//-= 与remove 一样效果
mutableList-="Jimmy"
//移除符合条件的参数
mutableList.removeIf {
it.contains("Jack")
}
println(mutableList)
}
4.集合遍历
fun main() {
//mutableListOf 创建只读集合
val list=listOf("Jason", "Jack", "Jacky")
//遍历
for (s in list) {
print(s)
}
//遍历
list.forEach {
print(it)
}
//遍历是获取索引
list.forEachIndexed { index, item ->
print("$index, $item")
}
}
5.解构与去重
fun main() {
//mutableListOf 创建只读集合
val list=listOf("Jason", "Jack", "Jacky")
//结构语法
//把list集合里的值 赋值给前面的属性 给他下划线就可以跳过该位置的属性赋值
val (origin,_,roxy)=list
print("$origin $roxy")
print(listOf("Jason", "Jack", "Jacky", "Jack").distinct()) //list 也有的去重方法
}
二.Set集合
1.Set创建与元素获取
通过setOf创建Set集合,使用elementAt函数读取集合中的元素。
fun main() {
//不可变 set集合
//set集合自动去重
val set = setOf("Jason", "Jack", "Jacky", "Jack")
//set[1] 没有这种写法
println(set.elementAt(2)) //取元素
}
2.可变集合
通过mutableSetOf创建可变的set集合
fun main() {
//可变set集合
//set集合自动去重
val mutableSetOf = mutableSetOf("Jason", "Jack", "Jacky", "Jack")
//添加元素
mutableSetOf+="XiaoHua"
//Set集合取值
print(mutableSetOf.elementAt(2))
}
3.集合转换
fun main() {
val mutableList = mutableListOf("Jason", "Jack", "Jacky", "Jack")
//我们可以通过List集合转Set集合驱虫
val toList = mutableList.toSet()
//转回List集合
val toList1 = toList.toMutableList()
println(toList1)
}
三.Map集合
1.Map创建
to虽然看着像关键字,但他实际上是个省略了点号和参数的特殊函数,to函数将它左边和右边的值转化成一对Pair
fun main() {
val mapOf2 = mapOf("123" to 123, "Jason" to 18, "Jack" to 30)//这也是一种方式
//123 to 123 其实是 "!23".to(123) 因为用了 infix关键字 .和() 都省略了
val mapOf1 = mapOf(Pair("312", 12312), Pair("123", 124214))//这也是一种创建方式
println(mapOf1)
println(mapOf2)
}
2.读取Map的值
fun main() {
val mapOf2 = mapOf("123" to 123, "Jason" to 18, "Jack" to 30)//这也是一种方式
//这些是Map集合的取值方法
print( mapOf2.get("Jack"))
print( mapOf2.getValue("Jack")) //如过要取的值为空,则报异常
print( mapOf2.getOrElse("13"){"Unknown"}) //没有这个值 放回后面lambda表达式的内容
print( mapOf2.getOrDefault("13",0)) //没有这个值 ,输入默认值
print(mapOf2["123"])
}
3.遍历
fun main() {
val mapOf2 = mapOf("123" to 123, "Jason" to 18, "Jack" to 30)//这也是一种方式
//以下是遍历方式
mapOf2.forEach {
print("${it.key} ${it.value} ")
}
//参数解构了
mapOf2.forEach { (key, value) ->
print("$key $value" )
}
}
4.可变集合
通过mutableMapOf创建可变的Map。
fun main() {
val mutableMapOf = mutableMapOf("123" to 123, "Jason" to 18, "Jack" to 30)
mutableMapOf +="12312" to 42124 //添加元素
mutableMapOf["1231241"] = 12213 //修改元素
mutableMapOf.getOrPut("Rose",{12312}) //先取值,当集合里没有当前要取得值时,会填进去一个默认值
print(mutableMapOf)
更多推荐



所有评论(0)