【笔记】Kotlin的数组

前言

Kotlin的数组学习笔记

创建数组

创建空数组

1
var arr: Array<数据类型> = arrayOf()

创建只读空数组

1
var arr: Array<数据类型> = emptyArray<数据类型>()

创建有长度的数组

  • 每个元素的默认值都为null

<num>:数组长度

1
var arr: Array<数据类型?> = arrayOfNulls(<num>)

创建数组并添加元素

1
var arr: Array<数据类型> = arrayOf(值, 值)
1
2
3
var arr: Array<数据类型> = Array(<num>) {
返回值
}

通过基本类型数组创建数组

1
var arr: IntArray = intArrayOf()
数据类型 备注
ByteArray 字节数组
ShortArray 短整型数组
IntArray 整型数组
LongArray 长整型数组
FloatArray 浮点数数组
DoubleArray 浮点数数组
CharArray 字符数组
BooleanArray 布尔数组

操作符

获取元素

1
var value = arr[<num>]
1
var 变量名 = arr[<num_1>][<num_2>]

修改元素

1
arr[<num>] = 值
1
arr[<num_1>][<num_2>] = 值

合并数组

1
2
3
4
var arr1 = arrayOf()
var arr2 = arrayOf()

var result = arr1 + arr2

实例属性

获取数组长度

1
arr.size

实例方法

拼接数组为字符串

  • 默认使用, 作为分隔符
1
arr.joinToString()
  • 定义分隔符
1
arr.joinToString("分隔符")
  • 定义分隔符,前缀,后缀
1
arr.joinToString(separator = "分隔符", prefix = "前缀", postfix = "后缀")
  • 定义将前<num>个元素拼接为字符串,超出部分显示为...
1
arr.joinToString(limit = <num>, truncated = "...")
  • 遍历所有元素,自定义每次拼接的内容
1
2
3
arr.joinToString {
it.toString()
}

判断数组中元素是否全部相同

1
2
3
4
var arr1 = arrayOf()
var arr2 = arrayOf()

var result = arr1.contentEquals(array2)

深对比

  • 针对于多维数组的深对比
1
2
3
4
var arr1 = arrayOf()
var arr2 = arrayOf()

var result = arr1.contentDeepEquals(array2)

拷贝数组

1
2
3
var arr = arrayOf()

var result = arr.copyOf()

拷贝指定长度

  • 从头开始拷贝指定长度的数组
1
2
3
var arr = arrayOf()

var result = arr.copyOf(<num>)

指定拷贝范围

  • 拷贝[,)范围的元素
1
2
3
var arr = arrayOf()

var result = arr.copyOfRange(<start_index>, <end_index>)
1
2
3
var arr = arrayOf()

var result = arr.sliceArray(<start_index> ..< <end_index>)

判断数组是否包含指定元素

1
2
3
var arr = arrayOf()

var result = arr in
1
2
3
var arr = arrayOf()

var result = arr !in
1
2
3
var arr = arrayOf()

var result = arr.contains(值)

查找指定元素在数组中的下标

通过遍历

1
var index = arr.indexOf(值)

通过二分查找法

1
var index = arr.binarySearch(值)

判断是否为空数组

  • 判断数组长度是否为0
1
var result = arr.any()

获取第一个元素

1
var result = arr.first()

获取最后一个元素

1
var result = arr.last()

排序

升序

1
arr.sort()

降序

1
arr.sortDescending()

翻转数组元素顺序

1
var result = arr.reversedArray()

打乱数组元素顺序

1
arr.shuffle()

数组转换为List集合

1
var list = arr.toMutableList()

遍历数组

1
2
3
4
for (index in 0..<arr.size) {
println(index)
println(arr[index])
}
1
2
3
4
for (index in arr.indices) {
println(index)
println(arr[index])
}
1
2
3
for (item in arr) {
println(item)
}
1
2
3
4
for ((index, item) in arr.withIndex()) {
println(index)
println(item)
}
1
2
3
arr.foreach {
println(it)
}
1
2
3
4
arr.foreach { index, item
println(index)
println(item)
}

自定义排序

  • 重写compareTo方法,返回值小于等于零顺序不变,返回值大于零顺序交换
1
2
3
4
5
6
class 类名 {
var 属性名: Int = 值
override fun compareTo(other: 类名): Int {
return this.属性名 - other.属性名
}
}

基本类型数组的实例方法

数值型数据的方法

求和

1
var result = arr.sum()

求平均数

1
var result = arr.average()

求最大值

1
var result = arr.max()

求最小值

1
var result = arr.min()

完成

参考文献

哔哩哔哩——青空の霞光