• kotlin 集合 list map 数组


    一、集合
            Kotlin中的集合用于在一个单元中存储一组相关对象。通过使用集合,可以存储,检索操作和聚合数据,也可以作为值参传给函数。

    Kotlin中大致分为两种不同集合的形式。它们是:

    只读集合(不变)

    可变集合

    集合类型        只读                                      可变
    List                listOf                              mutableListOf/ arrayListOf
    Set               setOf         mutableSetOf / hashSetOf / linkedSetOf / sortedSetOf
    Map            mapOf       mutableMapOf / hashMapOf / linkedMapOf / sortedMapOf
    二、List集合
     

    1. println("\n----------------list------------------------------------")
    2. var data1:List<String> = listOf("android","kotlin","java")//创建只读List
    3. println(data1[2])//获取元素

    数组越界

    • 使用List.getOrElse()函数

    • 使用List.getOrNull()函数

    1. println("\n____________________数据越界异常_______________ArrayIndexOutOfBoundException______________________")
    2. //println(data1[3])//越界异常 ArrayIndexOutOfBoundException
    3. //避免数据越界
    4. //1、当没有这个元素,执行lambda表达式
    5. println(data1.getOrElse(3){"PHP"})//pHP
    6. //2、当没有这个元素,返回null
    7. println(data1.getOrNull(3))//null
    8. //2.1 使用空合并操作符,返回空时提供默认值
    9. println(data1.getOrNull(3) ?: "Vue")

    2.2 创建可变List(  MutableList)

            使用索引值重写数组的值。数组的值是可以修改的,所以把它称为可变数组。要创建可变列表,可以使用mutableListOf函数。

    1. println("\n----------------可变list----mutableListOf-----------------------------")
    2. var mu = mutableListOf<String>("java","android","kotlin")
    3. mu.add("ios")
    4. mu.add(3,"php")
    5. println(mu.toString())
    6. mu.remove("java")
    7. println(mu.toString())
    8. mu.add(4,"php")
    9. mu.set(4,"sql")
    10. println(mu.toString())

    2.3 List和MutableList相互转换

            List还支持使用toList和toMutableList函数动态实现只读列表和可变列表的相互转换

    1. println("\n----------------可变list mutableList 和不可变list List 相互转化--------------------------------")
    2. var list= listOf<String>("java","android","ios")//创建只读数组
    3. var mutableList = mutableListOf("java","ios","php")//创建可变数组
    4. var list1:List<String> = mutableList.toList()//MutableList转List
    5. println(list1.toString())
    6. var mutableList2 = list.toMutableList() //List转MutableList
    7. println(mutableList2.toString())

    2.4 mutator函数

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

    • 添加元素运算符与删除元素运算符(都属于mutator函数)

    • 基于lambda表达式指定的条件删除元素

    1. println("\n----------------使用mutator函数--------------------------------")
    2. val mutableListMutator = mutableListOf("android","java")
    3. println(mutableListMutator)
    4. mutableListMutator += "ios"
    5. println(mutableListMutator)
    6. mutableListMutator -= "java"
    7. println(mutableListMutator)
    8. mutableListMutator.remove("java")
    9. println(mutableListMutator)
    10. //使用lambda表达式删除元素
    11. //先在lambda判断元素是否存在,当元素存在返回true,则删除元素
    12. mutableListMutator.removeIf { it.contains("android") }
    13. println(mutableListMutator.toString())

    2.5 List集合遍历

    • for..in

    • forEach

    • forEachIndexed

    1. println("\n----------------遍历list-------------------------------")
    2. println()
    3. for (code in mutableList){
    4. println("遍历list in $code")
    5. }
    6. println()
    7. mutableList.forEach {
    8. println("***遍历list forEarch $it")
    9. }
    10. println()
    11. mutableList.forEachIndexed { index, code ->
    12. println("***遍历 list forEarchIndexed 下标 $index 值$code")
    13. }
    14. }

    三、Set集合

            不允许有重复元素   list可以用list.distinct()  等价于set

    3.1 创建只读Set

    1. println("\n----------------创建 制度set------------------------------")
    2. var set1 = setOf<String>("java","android")
    3. println(set1.toString())
    4. println(set1.elementAt(1))
    5. 这里的安全操作和List类似。
    6. println(set1.elementAtOrElse(2){"ios"})
    7. println(set1.elementAtOrNull(3))
    8. println(set1.elementAtOrNull(3)?:"Flutter")

    3.2 创建可变Set

    1. println("\n----------------创建 可变set------------------------------")
    2. var set2 = mutableSetOf<String>("java","android","ios")
    3. set2.add("Flutter")//添加
    4. println(set2)
    5. set2.remove("java") //删除
    6. println(set2)
    7. set2.removeIf { it.contains("ios") }
    8. println(set2)

    四、Map集合

    4.1 创建只读Map

    • 使用to函数将它左边和右边的值转化成一对Pair。

    • 直接使用Pair

    1. println("\n____________创建 只读map mapof______________________")
    2. var map = mapOf<String,Int>("JAVA" to 2,"android" to 22,"ios" to 5)
    3. println(map)
    4. var map1 = mapOf<String,Int>(Pair("android",12), Pair("Flutter",20), Pair("java",20))
    5. println(map1.toString())
    6. //获取值
    7. println(map["android"])
    8. println(map.get("ios"))
    9. println(map1.getOrElse("ios"){"php"})//设置可以
    10. println(map1.getOrDefault("ios",2))

    4.2 创建可变Map

    1. println("\n—————————————————————可变map mutableMapOf—————————————————————")
    2. //创建可变Map
    3. var mutableMap1 = mutableMapOf(Pair("IOS",2), Pair("ANDROID",4))
    4. println(mutableMap1)
    5. //添加元素
    6. mutableMap1.put("java",2)
    7. mutableMap1.put("Flutter",9)
    8. println(mutableMap1)
    9. //删除元素Flutter
    10. mutableMap1.remove("Flutter")
    11. println(mutableMap1)
    12. //没有Android元素返回帅次
    13. println(mutableMap1.getOrElse("Android") { "大神" })//帅次
    14. println(mutableMap1.getOrDefault("22",22))
    15. //没有Vs元素,则添加Vs元素
    16. mutableMap1.getOrPut("Flutter"){45}
    17. println(mutableMap1)

    4.3 遍历Map

            2种forEach遍历Map

    1. //方法一:(it)
    2. mutableMap1.forEach {
    3. print("$it key=="+it.key+" ,value==${it.value} \n")
    4. }
    5. //方法二 (key,value):
    6. mutableMap1.forEach { key, i ->
    7. print(key+"---$i , ")
    8. }

  • 相关阅读:
    6.二叉树.题目3
    Springboot毕设项目宠物服务管理系统1j52o(java+VUE+Mybatis+Maven+Mysql)
    Linux ARM平台开发系列讲解(PCIE) 2.13.4 从软件的角度去学习PCIE硬件结构
    vue监听表单项填写完整
    CleanMyMac X2023最新版安装图文详解
    循环购:一种具有裂变能力的商业模式
    第 117 场 LeetCode 双周赛题解
    算法和数据结构(b站尚硅谷韩老师教程学习笔记)
    采集数据工具推荐,以及采集数据列表详细图解流程
    .net mvc 无法创建虚拟目录和无法启动IIS Express Web服务器指定的url无效 解决方法
  • 原文地址:https://blog.csdn.net/luoj_616/article/details/126780217