IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin学习(五)之----可变集合和不可变集合,以及解构写法 -> 正文阅读

[移动开发]Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

一. list
1.1.可变集合与不可变集合

    //TODO:不可变集合 -- 没有add,remove等方法
    var list3 = listOf("iam")
    println(list3.get(0))
    println(list3[0])
    println(list3.getOrNull(1)?:"越界了")
    println(list3.getOrElse(1,{"越界了"}))

    //TODO:可变集合  -- 有add,remove等方法
    var list1 = mutableListOf("is your")
    list1.remove("is your")
    println(list1.getOrNull(0))

    //TODO:不可变集合to可变集合
    var list2 = list3.toMutableList()
    println(list2[0])

    //TODO:可变集合to不可变集合
    var list4 = list1.toList()
    list1.removeIf { true } //TODO:删掉符合条件的元素(此处相当于全部删了)
    println(list1)

运行结果:
在这里插入图片描述
1.2三种遍历手段

    /**
     * 遍历三种写法
     * @author Allen
     */
    val list = listOf(1,2,3)

    for( i in list){
        print("$i ")
    }
    println()

    list.forEach {
        print("$it ")
    }
    println()

    list.forEachIndexed{index: Int, i: Int ->
        print("下标为$index 元素是$i  " )
    }
    println()

在这里插入图片描述
二. 解构写法

    /**
     * 解构写法
     */
    var(num1,num2,num3) = list;
    println("num1 = $num1; num2 = $num2;  num3 = $num3")
    num1 = 4; //可变
    println("num1 = $num1; num2 = $num2;  num3 = $num3")

    val(n1,n2,n3) = list
    //只读, n1 = 4会报错

    var(_,a2,a3) = list //_表示不接收,可以优化性能
    println("num2 = $a2; num3 = $n3")

通过反编译可以看出,_表示不接受数据,反编译没有给予变量

三.Set
与list有可变和不可变

    /**
     * set集合 没有set[0]的写法, 存放无序不重复的元素
     */
    var set = setOf(1,2,3) //TODO:不可变
    val set1 = mutableSetOf(1,2,3) //TODO:可变
    set1.add(4)
    println(set.elementAt(0))
    println(set1.elementAtOrNull(1))
    println(set1.elementAtOrElse(1,{"越接了"}))
    set1 += 5;
    set1 += 4
    println(set1.elementAt(4))

四. list 与 set 互转达到去重效果
在这里插入图片描述
在这里插入图片描述
五. 数组类型
1.1
在这里插入图片描述
注意:arrayof<>()存放的是Array<对象类型>,是类对象类型
在这里插入图片描述
在这里插入图片描述
1.2 集合转数组
在这里插入图片描述
1.3 arrayof<>()
在这里插入图片描述在这里插入图片描述
六. Map
1.1获取并初始化map对象的俩种方式

    val map1 = mapOf<String,String>("小郑" to("二十"),"Allen" to("二十一"))
    val map2 : Map<String,Int> = mapOf(Pair("小郑",20), Pair("Allen",21))

1.2获取值的五种方式

    //获取值方式第一种([]符重载,其实跟get()一样)
    //无数据返回null,不会奔溃
    println(map1["小郑"])
    println(map1["佚名"])

    //获取值方式第二种
    //无数据返回null,不会奔溃
    println(map1.get("小郑"))
    println(map1.get("佚名"))

    //获取值方式第三种,defaulValue参数不是lambda
    //无数据返回defaultValue
    println(map1.getOrDefault("小郑","没有相关数据"))
    println(map1.getOrDefault("佚名","没有相关数据"))

    //获取值方式第四种,defaultValue参数是lambda(lambda作为最后一个参数可以放在括号外)
    //无数据返回defaultValue
    println(map1.getOrElse("小郑"){"没有相关数据"})
    println(map1.getOrElse("Allen",{"没有相关数据"}))
    println(map1.getOrElse("佚名"){"没有相关数据"})

    //获取值方式第五种,无数据会奔溃
    println(map1.getValue("小郑"))
    println(map1.getValue("佚名"))

在这里插入图片描述
1.3 map从可变到不可变:

    var map3 = map1.toMutableMap()
    map3.put("晓坚","二十一")
    map3.remove("Allen")
    map3.replace("小郑","二十","二十三")
    println(map3)

在这里插入图片描述
在这里插入图片描述
1.4map的四种遍历

    //第一种
    map3.forEach {
        print("${it.key}=${it.value}  ")
    }
    println()

    //第二种
    map3.forEach{ Key,Value ->
        print("$Key=$Value  ")
    } //key和value应该是配对的,所以这里会花波浪线表示这么做没有错,但是不太好
    println()

    //第三种
    map3.forEach { (K,V) ->
        print("$K=$V  ")
    }
    println()

    //第四种
    for(item in map3){
        print("$item  ")
    }

在这里插入图片描述
其中第四种相当于

    //第四种
    for(item : Map.Entry<String,String> in map3){
        print("$item  ")
    }

但由于默认会推导并增加:Map.Entry<String,String>,所以可以不写

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:36:04  更:2022-01-17 11:38:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:34:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码