数据类型List/Set/Map
·
数据类型
List集合
不可变List
- getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达是,如果索引值不存在,可用来代替异常。
- getOrNull是Kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛出异常。
fun main(){
val list = listOf("a","b","c","d","e","f","g","h","i")
println(list.getOrElse(100){"Unknow"}) //Unknow
println(list.getOrNull(100)) //null
println(list.getOrNull(100) ?: "Unknow2") //Unknow2
}
可变列表
在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用mutableListOf函数。List还支持使用toList和toMutableList函数动态实现只读列表和可变列表的相互转换
fun main(){
val mutableList = mutableListOf("one","two","three","four","five","six")
mutableList.add("seven")
println(mutableList) //[one, two, three, four, five, six, seven]
val list = mutableList.toList() //转为不可变列表
// list.remove("four") //报错,不可变List不支持修改
val list2 = list.toMutableList() //转为可变列表
list2.remove("five")
println(list2) //[one, two, three, four, six, seven]
}
mutator函数
- 能修改可变列表的函数有个统一的名字:mutator函数。例如add,remove。
- 添加元素运算符与删除元素运算符(C++运算符重载)
- 基于lambda表达式指定的条件删除元素
fun main(){
val mutableList = mutableListOf("one","two","three","four","five","six")
mutableList += "seven" //mutableList.add("seven")
println(mutableList) //[one, two, three, four, five, six, seven]
mutableList -= "one" //remove
println(mutableList) //[two, three, four, five, six, seven]
mutableList.removeIf{it.contains("seven")} //如果包含seven删除seven
println(mutableList) //[two, three, four, five, six]
}
List遍历
fun main(){
val list = mutableListOf("one","two","three","four","five")
//1.forEach
list.forEach { println(it) }
//2.for
for(i in list){println(i)}
//3.forEachIndexed
list.forEachIndexed { index, i ->
println("$index -> $i")
}
}
解构
下划线_过滤掉不想要的赋值
fun main(){
val list = mutableListOf("one","two","three","four","five")
val (one,_,three) = list
println("$one, $three")
}
Set集合
setOf
新建不可变set
mutableSet
可变集合
fun main(){
// val set1 = setOf<Int>(1, 2, 3, 4, 1)
// print(set1) //
// println(set1.size)
// print(set1.elementAt(2))
val mutableSet = mutableSetOf(1,2,3,4,5)
mutableSet.remove(3)
mutableSet+=3
println(mutableSet)
}
基本语法和List相似
集合转换
- 把List转为Set,去掉重复元素
- 快捷函数
fun main(){
val list = listOf(1,2,3,4,5,2,3)
// val list2 = list.toSet().toList() //List去重 [1, 2, 3, 4, 5]
val list3 = list.distinct() //和上面等价 [1, 2, 3, 4, 5]
println(list3)
}
数组类型
import java.io.File
fun main(){
val intArray = intArrayOf(1,2,3,4,5)
listOf(10,20,30).toIntArray()
val fileArray = arrayOf(File("xxx"),File("yyy"))
}
map集合
map创建
to看上去像关键字,但事实上,它是个省略了点号和参数的特殊函数,to函数将它左边和右边的值转化成一对Pair。
mapOf(key to value,......)
fun main(){
//1.to
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
println(map) //{a=1, b=2, c=3}
//2.Pair
val map2 = mapOf(Pair("a",1), Pair("b",2))
println(map2) //{a=1, b=2}
}
读取map的值

Map遍历
map.forEach {
println("${it.key},${it.value}")
}
可变Map
通过mutableMapOf创建可变的Map
getOrPut键值不存在,就添加并返回结果,否则就返回已有键对应的值
fun main(){
val mutablemap = mutableMapOf("a" to 1, "b" to 2)
mutablemap += mutableMapOf("a" to 1, "b" to 2)
println(mutablemap) //{a=1, b=2}
mutablemap.put("a",3) //可改成 mutablemap["a"] = 3
println(mutablemap) //{a=3, b=2}
mutablemap.getOrPut("d"){4}
println(mutablemap) //{a=3, b=2, d=4}
}
更多推荐

所有评论(0)