【Android】Kotlin教程(3)

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还支持使用toListtoMutableList函数动态实现只读列表和可变列表的相互转换。

    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) // true

    val 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}

猜你喜欢

转载自blog.csdn.net/qq_63140630/article/details/143249021