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

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("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集合,数组的详解

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/19801,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?