文章目录
1.List集合
- getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。
- getOrNull是Kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛出异常
val list = listOf("jack","jackson","jacky")
println(list.getOrElse(4){
"Unknow"})
println(list.getOrNull(2) ?: "Unknow")
2.可变列表
在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用mutableListOf
函数。List还支持使用toList
和toMutableList
函数动态实现只读列表和可变列表的相互转换。
val mutableList = mutableListOf("jack", "jackson", "jacky")
mutableList.add("jim")
println(mutableList) // [jack, jackson, jacky, jim]
val toMutableList = list.toMutableList()
toMutableList.add("peng")
println(toMutableList) // [jack, jackson, jacky, peng]
3.mutator函数
- 能修改可变列表的函数有一个统一的名字:mutator函数
- 添加元素运算符与删除元素运算符
- 基于lambda表达式指定的条件删除元素
toMutableList -= "peng"
println(toMutableList) // [jack, jackson, jacky]
toMutableList.removeIf {
it.length > 5 }
println(toMutableList) // [jack, jacky]
4.遍历集合
for (i in mutableList){
println(i)
}
mutableList.forEach {
println(it) }
mutableList.forEachIndexed {
index, item ->
println("$index $item")
}
5.解构
通过_符号过滤不想要的元素。
val (origin,_,_,proxy) = mutableList // [jack, jackson, jacky, jim]
println("origin:$origin,proxy:$proxy") // origin:jack,proxy:jim
6.Set集合
通过setOf创建set集合,使用elementAt函数读取集合中的元素。
val set = setOf("Jack", "Jackson", "Jim", "Jacky", "Jack")
println(set) // [Jack, Jackson, Jim, Jacky]
println(set.elementAt(2)) // Jim
7.可变Set集合
通过MutableSetOf创建可变的set集合。
val mutableSet = mutableSetOf<String>("Jack", "Jackson", "Jim", "Jacky", "Jack")
mutableSet.add("peng")
println(mutableSet) // [Jack, Jackson, Jim, Jacky, peng]
8.集合转换
- 把List转换成Set,去掉重复元素
- 快捷函数
val toSet = listOf<String>("Jack", "Jackson", "Jim", "Jacky", "Jack")
.toSet()
println(toSet is Set) // true
val toList = setOf("Jack", "Jackson", "Jim", "Jacky", "Jack")
.toList().distinct()
println(toList is List) // true
9.数组类型
Kotlin中提供了各种Array,虽然是引用类型,但是可以编译成Java基本数据类型。
数组类型 | 创建函数 |
---|---|
IntArray | intArrayOf |
DoubleArray | doubleArrayOf |
LongArray | longArrayOf |
ShortArray | shortArrayOf |
ByteArray | byteArrayOf |
FloatArray | floatArrayOf |
BooleanArray | booleanArrayOf |
Array | arrayOf |
val intArrayOf = intArrayOf(1, 2, 3)
val toIntArray = listOf<Int>(1, 2, 3).toIntArray()
val doubleArrayOf = doubleArrayOf(1.2, 1.3, 1.4)
val toDoubleArray = listOf<Double>(1.2, 1.3).toDoubleArray()
10.Map集合
- []取值运算符,读取键对应的值,如果键不存在就返回null
- getValue,读取键对应的值,如果键不存在就抛出异常
- getOrElse,读取键对应的值,或者使用匿名函数返回默认值
- getOrDefault,读取键对应的值,或者返回默认值
val map = mapOf("Jack" to 10, "Rose" to 11, "Jim" to 12, "Hua" to 19)
for ((name, age) in map) {
println("$name is $age years old.")
}
println(map["Jack"])
println(map.getValue("Jack"))
println(map.getOrDefault("Jacki", "Unknow"))
println(map.getOrElse("Jack") {
"Unknow" })
11.Map遍历
使用 for 循环:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
for ((key, value) in map) {
println("$key -> $value")
}
使用 entries 属性:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
for (entry in map.entries) {
println("${
entry.key} -> ${
entry.value}")
}
使用 keys 和 values 属性:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
// 遍历键
for (key in map.keys) {
println(key)
}
// 遍历值
for (value in map.values) {
println(value)
}
使用 forEach 函数:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
map.forEach {
key, value ->
println("$key -> $value")
}
使用 with 和 apply 函数
val map: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
with(map) {
for ((key, value) in this) {
println("$key -> $value")
}
}
map.apply {
for ((key, value) in this) {
println("$key -> $value")
}
}
12.可变Map
val mutableMap = mutableMapOf<String, Int>("Jack" to 10, "Rose" to 11, "Jim" to 12, "Hua" to 19)
mutableMap.put("Zhi",18)
mutableMap.getOrPut("Pie"){
17}
println(mutableMap) // {Jack=10, Rose=11, Jim=12, Hua=19, Zhi=18, Pie=17}