之前我们学习了常用的集合和数组,它们创建的方式、如何获取元素以及遍历的方式,一般来说创建数据结构都可以使用kotlin的类型推导来简化代码:
//可变的,注意后面的mutable首字母小写
val list2: MutableList = mutableListOf("孙悟空","猪八戒","沙和尚")
//1.2 简化写法
获取的话可以使用[]的方式等等,遍历就可以想到增强for和foreach,当然不同的数据结构具有不同的遍历特点,需要我们注意区分;
之前我们学习了list集合和array数组,还有一个常用的结合叫做map集合,跟前面两者不同,它用来存储键值对,相信学过编程相关的都是到这个结构,安卓里面常用它来存储用户名和头像;那么这一期我们就来看一看kotlin是如何创建map以及它的一些性质:
有时候我们想要存储一些键值来实现功能,就可以使用map集合:
1、创建,含有可变和不可变map,和前面的集合是一样的,通过类型推导来简化代码也是可以的:
//3.1 map集合的基本使用 //不可变,使用mapof创建,原始写法 val map1: Map= mapOf ("Tony" to 1,"Jerry" to 2,Pair("Tom",3)) //可变,mutableMapOf创建,简化写法 val map2 = mutableMapOf("Tony" to 1,"Jerry" to 2,Pair("Tom",3)) println(map1) println(map2)
创建想要的不可变集合就是(集合of)的方式,创建可变的就是(mutable集合of)的方式;
2、获取到map中的元素,获取到value值的方式很多种,也有Java中的get,而且不会因为数据不存在而崩溃,但是getvalue就是,所以不推荐使用:
//3.2 获取到元素,map含有四种方式
//利用运算符重载的方式[],等价于get方式
println(map1["Tony"])
println(map1.get("Tony"))
//我们可以设置没有拿到元素时的默认值,getOrDefault如果有就会拿到
println(map1.getOrDefault("Tony2", -1))
//还可以使用来设置没有拿到数据的时候返回的整型数据
println(map1.getOrElse("Tony1") { -1 })
//最后一种方式是不推荐的,因为其会出现数据不存在是程序崩溃的情况
println(map1.getValue("Tony"))
3、遍历map,无非就是foreach和增强for,这是用来遍历数据结构最多的方式:
//3.3 map的遍历,也具有四种方式
//使用foreach,只有一个参数it覆盖
println()
map1.forEach{
print("${it.key} ${it.value} ")
}
println()
//使用foreach,具有两个参数覆盖it
map1.forEach{
key,value -> print("${key} ${value} ")
}
println()
//使用foreach,将键和值放在一起
map1.forEach{
(k,v)->print("${k} ${v} ")
}
println()
//使用增强for
for (entry in map1) {
print("${entry.key} ${entry.value} ")
}
println()
4、对可变map的增删操作:
//3.4 可变map的增删操作
//使用运算符重载,可以添加(+=)也可以删除(-=)
map2 += "aaa" to 123
//使用[]赋值操作,如果没有这个key就会创建一个
map2["bbb"] = 888
//使用put内置函数
map2.put("CCC",999)
//使用getorput,如果map中含有该key将会直接返回value,没有则创建
map2.getOrPut("fff"){555}
println(map2)
在kotlin里面有一个运算符重载的功能,也是为了简化代码用的,常用在一个增删数据的时候,一般就是+=添加数据,-=删除数据,[]获取数据;
那么这一期就介绍这一个,大家务必要多练习这些数据结构,毕竟安卓开发是需要处理很多数据的。



