文章目录
- 1.List集合
- 2.可变列表
- 3.mutator函数
- 4.遍历集合
- 5.解构
- 6.Set集合
- 7.可变Set集合
- 8.集合转换
- 9.数组类型
- 10.Map集合
- 11.Map遍历
- 12.可变Map
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) // trueval 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}