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--数据容器

Kotlin --数据容器

Kotlin 的数据容器分为 数组 和 集合。

其中 集合分为 集合Set、队列List、映射Map 等三种集合,每种又包括只读和可变两种类型。

这是为了判断该容器是否能进行增删改查等操作。

  • 数组
  • 集合

数组

数组是一种在初始化时就指定容器大小,不可以动态调整其大小的容器。元素按顺序存储在一段连续的内存段上。

数组的创建
arraysOf创建数组

创建一个数组并传值给他, 元素的类型可以不同

val arrayNumber : Array<Int> = arrayOf(1,2,3,4)
val arrayAny : Array <Any> = arrayOf(1 , false , "aa" , 3.6)
arrayOfNulls创建数组

创建一个指定容量大小的元素均为控的数组, 该数组的类型必须确定

//创建空数组
val arrayOfNulls : Array<String ? > = arrayOfNulls<String>(5)
arrayOfNulls[0] = "str1"
arrayOfNulls[1] = "str2"
arrayOfNulls[2] = "str3"
arrayOfNulls[3] = "str4"
arrayOfNulls[4] = null
动态创建数组

用接受数组大小以及一个方法参数的 Array 构造方法,用作参数的方法能够返回给定索引的每个元素初始值:

    val intArray1 = Array(5){ 
        it * 2  //lambda 表达式专用变量 , 这里指数组下标
    }
原生类型数组

在Kotlin中也有无装箱开销的专门的类来表示原生类型数组:

原生类型数组解释
ByteArray字节型数组
ShortArray短整型数组
IntArray整型数组
LongArray长整型数组
BooleanArray布尔型数组
CharArray字符型数组
FloatArray浮点型数组
DoubleArray双精度浮点型数组
IntArray函数
 // 1.创建一个长度为5的空的IntArray
 val intArray2 = IntArray(5)

// 2.创建一个长度为5的值全为100的IntArray [0, 0, 0, 0, 0]
 val intArr2 = IntArray(5) { 0 }

// 3.注意这里it是它索引下标值,所以这是创建一个长度为5的IntArray [0, 2, 4, 6, 8]
 val intArr3 = IntArray(5) {
     it * 2
 }
关于数组的方法

只有获取长度跟Java不同,其他方法均一样。

val len = intArr2.size
println(len)
遍历数组
 val intArr2 = IntArray(5) { 0 }

 //普通for循环
    for (item in intArr){
        println(item)
    }
 //forEach
 intArr.forEach {
     println("$it ")
 }
tips:

关于 IntArrayarrayOf有什么区别

  • intArrayOf强调的是int,类似 java中的int[],所以其中的参数不可为null
  • arrayOf类似 java 中的Integer[],所以可以在其中赋值null
  • kotlin中数组不能直接赋值给可变形参vararg,需要通过关键字*

集合

集合分为可变集合,显而易见,是指集合创建完成之后,可以对集合进行增删改查操作

不可变集合,显而易见,是指指集合创建完成之后,不能对集合进行增删改查操作,会抛异常

数组创建方式示例说明是否可变
arrayListOf() mutableListOf 相同元素类型的队列val array = arrayListOf(1, 2, 3) val array = mutableListOf()- 必须指定元素类型可变
listOf() 相同元素类型的集合val array = listOf(1, 2, 3)- 必须指定元素类型 - 必须指定初始化数据元素不可变
arrayMapOf<K,V>() mutableMapOf<K,V> 相同元素类型的字典val array= arrayMapOf(Pair(“key”,“value”)) val array= mutableMapOf()- 初始元素使用Pair包装可变
mapOf() 相同元素类型的字典val array= mapOf(Pair(“key”,“value”))- 元素使用Pair包装 - 必须指定初始元素不可变
arraySetOf() mutableSetOf 相同元素类型的集合val array= arraySetOf(1,2,3) val array= mutableSetOf()- 会对元素自动去重可变
setOf() 相同元素类型的集合val array= arraySetOf(1,2,3)- 对元素自动去重 - 必须指定元素类型。不可变
List队列

队列是一种按照顺序排列的,它与集合的最大区别,便是多了个次序管理。

不可变队列
val arrString = listOf<String>("a", "b" , "c") //不可进行增删改操作
可变队列
val arrList : MutableList<String> = mutableListOf<String>() //可进行增删改查操作

arrList.add("ss");
arrList.add("aa")
arrList.add("bb")
arrList.add(1 , "qq")

mutable意味可变的 ,作为前缀。

Set集合
  • 其内的元素不按顺序排列。
  • 唯一性,若出现相同的元素,则将覆盖。
不可变集合:
val arrSet1 = setOf<String>("a" , "b" )
可变集合:
val arrSet : MutableSet<String> = mutableSetOf()
arrSet.add("a")
arrSet.add("b")
arrSet.add("b")

val iterator = arrSet.iterator()
iterator.forEach {
    println("item : $it") // a b
}
Map字典

其内部以键值对 的方式储存 , (key - value)。元素的键与值是一一对应的关系,相同的键名指向的值对象是唯一的,所以映射中每个元素的键名各不相同,这个特性使得映射的变更操作与队列存在以下不同之处(注意增删操作必须由MutableMap来完成):

不可变字典
val arrMap1 = mapOf<String , Int>("a" to 1 , "b" to 2)
可变字典
val arrMap : MutableMap<String , Int> = mutableMapOf()
arrMap["a"] = 1
arrMap["b"] = 2
方法
增删改查
val strList = mutableListOf<String>()
//增加元素
strList.add("aa")
strList.add("bb")
strList.add("cc")
strList.remove("bb") //删除”aa“元素
strList.removeAt(1)//删除位置为1 的元素

strList.set(0 , "dd") //把0位置的元素设置为“dd"

strList.get(0) //获取位置为0 的元素

strList.forEach{
    print("$it  ") //遍历
}
排序…
val arrList1 :MutableList<Int> = mutableListOf(3,6,2,1,4,5,2,0)

arrList1.sort()
//0  1  2  2  3  4  5  6  
for (item in arrList1){
    print("$item  ")
}

//6  5  4  3  2  2  1  0  
arrList1.sortDescending()
arrList1.forEach{
    print("$it  ")
}

参考:https://www.songyubao.com/book/primary/kotlin/kotlin-lambda.html

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:37:31  更:2021-08-01 14:39:22 
 
开发: 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年5日历 -2024/5/6 21:44:14-

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