Kotlin学习之----集合(List、MutableList)

目录

一、List数组

二、MutableList可变数组

三、List的for遍历


一、List数组

1、getOrElse、getOrNull学习

kotlin数组获取数据可以使用[]操作符,因为kotlin使用了操作符功能。获取元素尽量使用getOrElse或者getOrNull避免出现java中经常出现的数组越界问题。

fun main() {
    listTest()
}

fun listTest() {
    var l : List<String> = listOf<String>("ZhangSan" , "LiSi" , "WangWu" , "ZhaoLiu")
    println(l[0])
    println(l[1])
    println(l[2])
    println(l[3])
    //println(l[4]) 越界崩溃
    println(l.getOrElse(4) {"$it 你越界了哈!"})
    println()
    println(l.getOrNull(5))
}

/**
 打印值
ZhangSan
LiSi
WangWu
ZhaoLiu
4 你越界了哈!

null
 * */

1、getOrElse第一个参数,要取出的下标值,第二个参数是一个lambda函数,返回值为泛型,就是list的数据类型。当输入的下标越界的时候,会返回lambda的返回值,并不会崩溃。

2、getOrNull接收一个参数为要取出的下标,当发生数组越界的时候返回null,并不会崩溃。

二、MutableList可变数组

MutableList为可变集合,可以使用add、remove等操作 ,实现了运算符重载可以使用 += -=操作。

removeIf,可以批量删除指定类型的所有元素,相当于对集合进行遍历后判断每个元素是否符合lambda表达式给定的判定条件,然后对指定元素进行删除操作。

MutableList和List可以进行相互转换。l.toList() l.toMutableList()


fun main() {
    val l : MutableList<String> = mutableListOf<String>("ZhangSan" , "LiSi" , "WangWu" , "ZhaoLiu")
    l.removeAt(1)
    l.add("零零散散")
    println("集合1 : $l")

    println()
    //运算符重载
    l += "张三"
    l += "王五"
    l += "张老六"

    l -= "ZhangSan"

    println("集合2 : $l")

    //测试getOrNull,数组越界
    println(l.getOrNull(600))

    //删除,条件是lambda表达式为true的元素,it为list中的每一个元素
    l.removeIf {
        it.contains("张")
    }

    println("集合3 : $l")

    l += "张三"
    l += "王五"
    l += "张老六"

    //遍历相关
    for (v in l) {
        print("元素 $ v , ")
    }

    println()

    l.forEach{
        print("元素:$it , ")
    }

    println()

    //forEachIndexed接收两个参数
    l.forEachIndexed{index , item ->
        print("元素:{$index} 值为 $item , ")
    }

    l.toList() ;
    l.toMutableList() ;

    println()
}

/**
 * 输出
 * 集合1 : [ZhangSan, WangWu, ZhaoLiu, 零零散散]

集合2 : [WangWu, ZhaoLiu, 零零散散, 张三, 王五, 张老六]
null
集合3 : [WangWu, ZhaoLiu, 零零散散, 王五]
元素 $ v , 元素 $ v , 元素 $ v , 元素 $ v , 元素 $ v , 元素 $ v , 元素 $ v ,
元素:WangWu , 元素:ZhaoLiu , 元素:零零散散 , 元素:王五 , 元素:张三 , 元素:王五 , 元素:张老六 ,
元素:{0} 值为 WangWu , 元素:{1} 值为 ZhaoLiu , 元素:{2} 值为 零零散散 , 元素:{3} 值为 王五 , 元素:{4} 值为 张三 , 元素:{5} 值为 王五 , 元素:{6} 值为 张老六 ,
 * */

三、List的for遍历

很简单,主要使用until、..、downTo、step几个关键字,直接看代码即可


    //until 左关右开
    for (i in 0 until 50){
        print("$i ")//输出 0 - 49
    }
    println()
    //.. 左关右关
    for (i in 0..50){
        print("$i ")//输出 0 - 50
    }

    val ll = 0..50
    println(ll)

    //downTo自降方式,左闭右闭
    for (i in 50 downTo 0) {
        print("$i ")//输出 0 - 50
    }
    println()

    //step设置步长
    for (i in 50 downTo 0 step 2) {
        print("$i ")//输出 0 - 50
    }
    println()

    //遍历列表,直接使用until避免最后一个元素越界问题
    println("使用for加下标遍列表:")
    for (i in 0 until l.size) {
        print("${l[i]} , ")
    }
    println()
    //逆向遍历列表
    for (i in l.size-1 downTo 0) {
        print("${l[i]} , ")
    }

猜你喜欢

转载自blog.csdn.net/mldxs/article/details/127150691