请教问下kotlin中怎么在集合中添加数组元素

请教问下kotlin中怎么在集合中添加数组元素,第1张

// 定义Int类型数组

var itemArr = intArrayOf(21, 40, 11, 33, 78)

fun test() {

println("初始:${itemArr.asList().toString()}")

println("被 3 整除:${b3zc()}")

addItem(2021)

println("添加-2021:${itemArr.asList().toString()}")

deleteItem(2)

println("删除第三个的元素:${itemArr.asList().toString()}")

deleteItemNum(78)

println("删除数字78:${itemArr.asList().toString()}")

}

/**

* 增加item

* @item:需添加数值

* */

fun addItem(item: Int) {

var newArr = IntArray(itemArr.size + 1)

for (i in itemArr.indices) {

newArr[i] = itemArr[i]

}

newArr[itemArr.size] = item

itemArr = newArr

}

/**

* 删除item

* @index:删除位置下标

* */

fun deleteItem(index: Int) {

var newArr = IntArray(itemArr.size - 1)

for (i in newArr.indices) {

if (i <index) {

newArr[i] = itemArr[i]

} else {

newArr[i] = itemArr[i + 1]

}

}

itemArr = newArr

}

/**

* 删除对应的元素

* @num:删除数字

* */

fun deleteItemNum(num: Int) {

for (i in itemArr.indices) {

if (num == itemArr[i]) {

deleteItem(i)

break

}

}

}

/**

* 被 3 整除的所有元素

* */

fun b3zc(): String {

var string: String = ""

for (i in itemArr.indices) {

if (itemArr[i] % 3 == 0) {

string += itemArr[i].toString().plus("、")

}

}

return string.substring(0, string.lastIndex - 1)

}

kotlin 为数组增加了 Array 类,为元素是基本类型的数组增加了 XxxArray 类(其中Xxx 可以是 Byte、Short、Int 等基本类型)

kotlin 的集合体系抛弃了 Java 集合体系中的 Queue 集合,但增加了可变集合和不可变集合的概念,与java集合类似的是, kotlin的List 代表有序、集合元素可重复的集合 Set 代表无序、集合元素不可重复的集合,Map则采用 key-value 对的形式存储数据

kotlin 既可允许通过 Array<T>类的构造器来创建实例,也可通过arrayOf()等工具函数来创建实例

arrayOf():无须显式指定数组的长度,但需要依次列出每个数组元素

arrayOfNulls():需要显式指定数组的长度,数组元素全部被初始化null,需要用泛型指定数组元素的类型

emptyArray():创建一个长度为0的空数组,需要用泛型指定数组元素的类型

Array(size:Int, init: (Int)->T)构造器:需要显式指定数组的长度,并可通过 Lambda 表达式来动态计算各数组元素的值

由于Array<T>类要求它的元素必须是引用类型,因此,如果程序将基本类型的值存入 Array<T>中 Kotlin 会将这些基本类型的值自动装箱成包装类,为此, kotlin 专门提供了 ByteArray、ShortArray、IntArray、LongArray、CharArray、FloatArray、DoubleArray、BooleanArray 用于存储基本类型,不会进行自动装箱

XxxArray 数组不支持使用将元素初始化为 null 方式来创建数组,因为基本类型的元素不允许为 null

访问数组元素都是通过在数组引用变量后紧跟一个方括号[]实现的,方括号里是数组元素的索引,索引值大于0,且小于数组的长度

程序还可使用in 、!in 来检查某个索引是否位于数组的索引区间内,Kotlin 还为数组提供了lastlndex 属性,用于返回数组最后一个元素的索引值,该索引值通常等于size-1

由于数组还提供了用 operator 修饰的 plus()、 contains()方法,因此数组可通过+、 in 运算符进行运算

用一维数组的方式来处理多维数组

Kotlin 的集合类由两个接口派生:Collection和Map,又被分成两大类:可变集合和不可变集合,只有可变集合才能添加、删除、修改元素,不可变集合只能读取元素

Kotlin 只提供了 HashSet、HasMap、LinkedHashSet、LinkedHashMap、ArrayList 这几个集合实现类,而且它们都是可变集合,Kotlin 的不可变集合类并没有暴露出来,只能通过函数来创建不可变集合,依然可以使用 Java 集合框架提供的其他集合类

推荐使用 Kotlin 提供的工具函数来创建 Set 集合

其中 setOf()、mutableSetOf()、linkedSetOf()创建的 Set 集合能维护元素的添加顺序sortedSetOf()函数创建的 Set 集合会按照大小对元素排序,如果希望 Set 集合不维护元素顺序,只有通过 hashSetOf()函数创建 Set 集合才行

Set 集合中很多方法与 Array 的方法功能相似,例如 all (判断是否所有集合元素都满足指定规则)、 any(判断是否任一元素都满足指定规则)、associate(根据 Set 集合生成Map 集合)、drop(按规则去除集合的部分元素)、filter(对集合元素执行过滤)、 find(查找集合元素)

Set和MutableSet 都包含 Iterator()方法,但普通 Set的iterator()方法返回的是Iterator 对象,该 Iterator 对象只有 hasNextOf()、nextOf()两个方法:而 MutableSet的iterator()方法返回的是 Mutablelterator 对象,该对象除hasNextOf()、nextOf()两个方法之外,还提供了一个remove()方法,该方法可用于在遍历时删除元素

List 集合的最大特征有序可重复

推荐使用工具函数来创建List 集合

Set 支持的 *** 作 List 一般都能支持,还增加了通过索引 *** 作集合元素的方法

在可变的 Set 中介绍的方法,可变的 List 也完全支持,还增加了根据索引执行插入、删除、替换的方法

用于保存 key-value 对,也被分为可变的和不可变的

推荐使用 Kotlin 提供的工具函数来创建 Map 集合


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11721831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存