kotlin(八) 集合 list map 数组

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

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

只读集合(不变)

可变集合

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

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

数组越界

  • 使用List.getOrElse()函数

  • 使用List.getOrNull()函数

    println("\n____________________数据越界异常_______________ArrayIndexOutOfBoundException______________________")
    //println(data1[3])//越界异常  ArrayIndexOutOfBoundException

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

2.2 创建可变List(  MutableList)

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

    println("\n----------------可变list----mutableListOf-----------------------------")
    var  mu = mutableListOf<String>("java","android","kotlin")
    mu.add("ios")
    mu.add(3,"php")
    println(mu.toString())
    mu.remove("java")
    println(mu.toString())
    mu.add(4,"php")
    mu.set(4,"sql")
    println(mu.toString())

2.3 List和MutableList相互转换

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

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

2.4 mutator函数

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

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

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


println("\n----------------使用mutator函数--------------------------------")
val mutableListMutator = mutableListOf("android","java")
println(mutableListMutator)
mutableListMutator += "ios"
println(mutableListMutator)
mutableListMutator -= "java"
println(mutableListMutator)
mutableListMutator.remove("java")
println(mutableListMutator)
//使用lambda表达式删除元素
//先在lambda判断元素是否存在,当元素存在返回true,则删除元素
mutableListMutator.removeIf { it.contains("android") }
println(mutableListMutator.toString())

2.5 List集合遍历

  • for..in

  • forEach

  • forEachIndexed

    println("\n----------------遍历list-------------------------------")
    println()
    for (code in mutableList){
        println("遍历list in  $code")
    }
    println()
    mutableList.forEach {
        println("***遍历list forEarch   $it")
    }
    println()
    mutableList.forEachIndexed { index, code ->
      println("***遍历 list  forEarchIndexed  下标 $index   值$code")
    }
}

三、Set集合

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

3.1 创建只读Set

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

3.2 创建可变Set

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

四、Map集合

4.1 创建只读Map

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

  • 直接使用Pair

    println("\n____________创建 只读map  mapof______________________")
    var map = mapOf<String,Int>("JAVA" to 2,"android" to 22,"ios" to 5)
    println(map)
    var map1 = mapOf<String,Int>(Pair("android",12), Pair("Flutter",20), Pair("java",20))
    println(map1.toString())

    //获取值
    println(map["android"])
    println(map.get("ios"))
    println(map1.getOrElse("ios"){"php"})//设置可以
    println(map1.getOrDefault("ios",2))

4.2 创建可变Map

    println("\n—————————————————————可变map  mutableMapOf—————————————————————")
    //创建可变Map
    var mutableMap1 = mutableMapOf(Pair("IOS",2), Pair("ANDROID",4))
    println(mutableMap1)
    //添加元素
    mutableMap1.put("java",2)
    mutableMap1.put("Flutter",9)
    println(mutableMap1)
    //删除元素Flutter
    mutableMap1.remove("Flutter")
    println(mutableMap1)
    //没有Android元素返回帅次
    println(mutableMap1.getOrElse("Android") { "大神" })//帅次
    println(mutableMap1.getOrDefault("22",22))

    //没有Vs元素,则添加Vs元素
    mutableMap1.getOrPut("Flutter"){45}
    println(mutableMap1)

4.3 遍历Map

        2种forEach遍历Map

    //方法一:(it)
    mutableMap1.forEach {
        print("$it key=="+it.key+" ,value==${it.value} \n")
    }

    //方法二   (key,value):
    mutableMap1.forEach { key, i ->
        print(key+"---$i   ,  ")
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值