Kotlin 中List集合,Set集合,Map集合,数组的详解

Posted 路宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 中List集合,Set集合,Map集合,数组的详解相关的知识,希望对你有一定的参考价值。

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
👉点击跳转到教程

1、创建不可变List集合

fun main() 
    val list = listOf("Jason", "Jack", "Jacky")
    println(list[2])
    //getOrElse是一个安全索引取值函数,它需要两个参数
    //第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常
    println(list.getOrElse(3)  "UnKnown" )
    //getOrNull是kotlin提供的另一个安全索引取值函数,它返回null结果,而不是抛异常
    println(list.getOrNull(3) ?: "UnKnown")

输出结果

Jacky
UnKnown
UnKnown

2、创建可变的List集合

fun main() 
    //可变的list集合
    val list = mutableListOf("Jason", "Jack", "Jacky")
    list.add("Jimmy")
    list.remove("Jack")
    println(list)

    //mutator函数:能修改可变列表的函数有个统一的名字(mutator函数)
    //运算符重载:普通的符号,通过运算符重载技术,让其具备特定的功能
    list += "android"
    println(list)

    list -= "Jason"
    println(list)

    //包含Jack的字符,就把包含Jack字符的元素删除掉
    list.removeIf 
        it.contains("Jack")
    

    println(list)

    list.remove("Jack")
    println(list)
    //不可变list集合,转为可变list集合
    var toMutableList = listOf("Jason", "Jack", "Jacky").toMutableList()
    toMutableList.add("1")
    println(toMutableList)
    //可变list集合,转为不可变list集合
    val toList = mutableListOf("Jason", "Jack", "Jacky").toList()
    println(toList)

    val listOf = listOf(1, 2, 15, 90)
    println(listOf)


输出结果

[Jason, Jacky, Jimmy]
[Jason, Jacky, Jimmy, Android]
[Jacky, Jimmy, Android]
[Jimmy, Android]
[Jimmy, Android]
[Jason, Jack, Jacky, 1]
[Jason, Jack, Jacky]
[1, 2, 15, 90]

3、创建不可变Set集合和可变Set集合,以及List集合和Set集合之间的转换函数:distinct

fun main() 
//    var set = setOf("Jason", "Jack", "Jacky", "Jack")
    //使用elementAt函数读取集合中的元素
//    println(set.elementAt(0))
//    println(set.elementAt(1))
//    println(set.elementAt(2))
    val mutableSetOf = mutableSetOf("Jason", "Jack1", "Jacky", "Jack")
//    mutableSetOf += "Jimmy"
//    mutableSetOf -= "Jack"
//    for (i in mutableSetOf) 
//        println(i)
//    
//    mutableSetOf.forEach 
//        print("$it ")
//    

    for (i in mutableSetOf.indices) 
        print(mutableSetOf.elementAt(i) + " ")
    
    println()

    println("****************************")
    val set = setOf<String>("Jason", "test", "hello", ".net")
    for (index in set.indices) 
        print(set.elementAt(index) + " ")
    
//    for (i in set) 
//        println(i)
//    
//    set.forEach 
//        println(it)
//    
//    println(mutableSetOf.elementAt(2))
    println()
    //集合转换
    //把List集合转换成Set,去掉重复元素
    val list = listOf("Jason", "Jack", "Jacky", "Jack")
        .toSet()
        .toList()
    println(list)

    //distinct;List集合转Set集合,去重的一个快捷函数
    println(listOf("Jason", "Jack", "Jacky", "Jack").distinct())

输出结果

Jason Jack1 Jacky Jack 
****************************
Jason test hello .net 
[Jason, Jack, Jacky]
[Jason, Jack, Jacky]

4、数组类型

代码如下:

fun main() 
    val intArray = intArrayOf(10, 30, 20)
    //得到的int类型的数组
    var toIntArray = listOf(10, 30, 40).toIntArray()
    println(toIntArray[0])
    var arrayOf = arrayOf(File("xxx"), File("yyy"))
    println(arrayOf[0])

输出结果

10
xxx

5、创建不可变Map集合

fun main() 
    //to 是省略了点号和参数的特殊参数,to函数将它左边和右边的值转化为一对Pair
    var map = mapOf("jack" to 20, "hello" to 15, "test" to 10)
//    mapOf(Pair("jimmy", 20))
    println(map["jack"]) //[]取值运算符,读取键对应的值,如果键不存在就返回null
    println(map["hh"]) //null
    println(map.getValue("hello")) //读取键对应的值,如果键不存在就抛出异常
    println(map.getOrElse("test1")  "Unknown" ) //读取键对应的值,或者使用匿名函数返回默认值
    println(map.getOrDefault("rose", 0))//读取键对应的值,或者返回默认值

    /**
     * forEach遍历Map
     */
    map.forEach 
        println("$it.key,$it.value")
    
    map.forEach  (key: String, value: Int) ->
        println("$key,$value")
    

输出结果如下:

20
null
15
Unknown
0
jack,20
hello,15
test,10
jack,20
hello,15
test,10

6、创建可变Map集合

fun main() 
    var mutableMapOf = mutableMapOf("jack" to 20, "hello" to 15, "test" to 10)
    mutableMapOf += "Jimmy" to 30
    mutableMapOf.put("Jimmy", 100)
    mutableMapOf.getOrPut("Rose")  18 
    println(mutableMapOf)

输出结果如下:

jack=20, hello=15, test=10, Jimmy=100, Rose=18

以上是关于Kotlin 中List集合,Set集合,Map集合,数组的详解的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

Kotlin集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

Kotlin实战Kotlin中集合的创建

Kotlin实战Kotlin中集合的创建

Kotlin实战Kotlin中集合的创建

Kotlin语法学习_Lambda编程