阅读 251

kotlin学习(5)-集合

kotlin集合分为两种类型:只读和可变

创建与获取

fun main() {
    val list = listOf<String>("jason", "jack", "dog")
    //数组越界 异常
    print(list[3])

    //getOrElse是一个安全索引取值函数,第一个参数:索引值 第二个参数:是能够提供默认值的lambda表达式
    //如果索引值不存在,使用异常代替
    print(list.getOrElse(3){"unKnown"})
    //返回null,而不是抛出异常
    print(list.getOrNull(3)?:"unKnown")
}
复制代码

创建mutableList 可变列表

    //创建可变列表
    val mutableListOf = mutableListOf("jason", "jack", "dog")
    mutableListOf.add("cat")
    mutableListOf.remove("jack")
复制代码

kotlin中支持内容修改的列表叫做可变列表,可以使用mutableListOf函数。list还支持使用toList和toMutableList动态实现 只读列表和可变列表的相互转换

    //转换为只读列表
    val toList = mutableListOf.toList()
复制代码

mutator函数:

能修改可变列表的函数有一个统一的名字:mutator函数

    //能修改可变列表的函数有一个统一的名字:mutator函数
    mutableListOf += "Jimmy"//添加jimmy
    mutableListOf -= "Jimmy"//移除jimmy
    //如果list中的元素包含dog 则移除
    mutableListOf.removeIf { it.contains("dog") }
复制代码

遍历(三种方式)

    
    //for in 遍历
    for(s in list2){
        println(s)
    }
    //forEach遍历
    list2.forEach {
        print(it)
    }
    //forEachIndexed遍历时获取索引
    list2.forEachIndexed { index, item -> 
        print("$index, $item")
    }
复制代码

解构

    val list2 = listOf("j", "k", "l")
    //给括号中的元素赋值
    val (origin: String, dext: String, proxy: String) = list2
    //使用 _ 表示跳过这个元素的赋值
    val (origin1: String, _: String, proxy1: String) = list2
    //打印赋值后的字符串
    print(origin+dest+proxy)
复制代码

Set集合

创建和获取

    val set = setOf("j", "k", "c", "y")
    //获取元素
    val elementAt = set.elementAt(2)
复制代码

可变集合

    val mutableSet = mutableSetOf("j", "k", "c", "y")
    //修改集合中的值
    mutableSet.add("m")
    mutableSet.remove("m")
    mutableSet += "n"
    mutableSet -= "n"
复制代码

set与list的转换以及list的去重

    //集合转换 set和list 转换
    val toSet = listOf("a", "b", "c", "a").toSet() //转为set去重
    val toList1 = toSet.toList() //再转回为list
    //去重后打印
    print(toList1)

    //distinct 去重快捷函数
    val distinct = listOf("a", "b", "c", "a").distinct()
复制代码

数组类型

    //数组类型
    val intArray = intArrayOf(10, 20, 30)
    //list转数组
    val toIntArray = listOf(10, 20, 30).toIntArray()
    //创建数组
    val arrayOf = arrayOf("1", "2", "3")
   
复制代码

map创建以及遍历

    //map创建
    //to是一个函数 返回pair类型
    val mapOf = mapOf("jack" to 20, "wang" to 30, "liu" to 40)
    //直接使用pair
    mapOf(Pair("a", 1), Pair("b", 2))

    //取值
    val i = mapOf["jack"]
    mapOf.getValue("jack")
    mapOf.getOrElse("jack") { "unKnow" } //取不出来的话返回unKnow
    mapOf.getOrDefault("jack", 0) //默认值为0

    //遍历map
    mapOf.forEach { t, u ->
        print("$t,$u")
    }

    mapOf.forEach {
        print(it.key + it.value)
    }
复制代码

可变map

    //可变map
    val mutableMapOf = mutableMapOf("jack" to 20, "wang" to 30, "liu" to 40)
    mutableMapOf += "jimmy" to 50
    mutableMapOf["jimmy"] = 30
    
    //没有获取到则添加(jack,18)
    mutableMapOf.getOrPut("jack") {
        18
    }
复制代码
文章分类
Android
文章标签