Kotin学习笔记之List的使用

241 阅读2分钟
package com.example.firstkotlin.koltin

import android.os.Build
import androidx.annotation.RequiresApi


/**
 * 项目名称 firstKotlin
 * 创建时间 12/26/21 9:17 PM
 *
 **/

fun main(){
    list()
    multableList()
    mutator()
    everyItem()
    listTips()
}

list的创建和元素的获取
  • 可通过listOf 初始化一个list
  • 通过[]或者get() 方法获取list中的值
  • 可通过getOrNull 获取一个元素值,如果对应索引处没有值,会返回null
  • 可通过getOrElse 获取一个元素值,如果对应出没有值,会返回匿名函数中返回的值
  • getOrNull以及getOrElse函数都是list中的安全索引取值函数
fun list(){
    val list = listOf("a","b","c")
    println(list.get(0)) //  a
    println(list.get(1)) //  b
    println(list.getOrNull(3)) // null
    println(list.getOrNull(3) ?: "在对应索引没有取到值,这是默认值") //在对应索引没有取到值,这是默认值
    println(list.getOrElse(3){"这是默认值"}) /// 这是默认值
}

可变list
  • 通过listOf创建的list是不可修改的list,只能读取里面的值,但是不可写入以及修改。即只可读不可写。
  • 如果要创建可编辑的list,需要使用multableLsitOf方法。
  • 可变列表和不可变列表之间可以互相转换
fun multableList(){
    val multableList = mutableListOf<String>("1","2","3")
    // 新增元素 on 12/26/21 9:32 PM
    multableList.add("4")
    // 修改元素 on 12/26/21 9:32 PM
    multableList[3] = "5"
    // 移除元素 on 12/26/21 9:32 PM
    multableList.remove("1")

    // 可变列表转换为不可变列表 on 12/26/21 9:33 PM
    multableList.toList()
    // 不可变列表变为可变列表 on 12/26/21 9:34 PM
    multableList.toList().toMutableList()
}

能修改可变列表的函数有一个统一的名字:mutator函数
  • 以下是几个mutator函数的举例:
@RequiresApi(Build.VERSION_CODES.N)
fun mutator(){
    val mutableList = mutableListOf<String>("Tom","Nacy","Ant","Jack")
    // 新增一个元素 on 12/26/21 9:39 PM
    mutableList += "Lii"
    println(mutableList)  // [Tom, Nacy, Ant, Jack, Lii]
    // 删除一个元素 on 12/26/21 9:40 PM
    mutableList -= "Ant"
    println(mutableList) // [Tom, Nacy, Jack, Lii]
    // 通过条件表达式删除元素 on 12/26/21 9:41 PM
    mutableList.removeIf { it.contains("Nacy") }
    println(mutableList) // [Tom, Jack, Lii]
}
list中元素的遍历
fun everyItem(){
    val list = listOf("1","2","3","3")
    // 传统遍历方式 on 12/26/21 9:44 PM
    for(item in list){
        println(item)
    }
    // lambda表达式方式 on 12/26/21 9:45 PM
    list.forEach {
        println(it)
    }
    // 如果在遍历的同时附带元素索引,可以使用 on 12/26/21 9:46 PM
    list.forEachIndexed { index, s ->
        println("第${index}个元素是${s}")
    }
}
list中的解构语法
fun listTips(){
    val list = listOf<String>("a","b","c")
    val (a:kotlin.String,b:kotlin.String,c:kotlin.String) = list
    println("a : ${a} , b : ${b} ,c : ${c}")   // a : a , b : b ,c : c

    // 小技巧:如果只想要第一个和第三个元素,排除掉第二个元素,可以使用如下的写法 on 12/26/21 9:53 PM
    val (a1:kotlin.String,_:kotlin.String,c1:kotlin.String) = list
    println("a1 : ${a1} , c1 : ${c1}") // a1 : a , c1 : c
}