最近开始从Java学习Kotlin,自己做一些笔记,欢迎补充和纠正。
Kotlin数组
数组是一种初始化时指定容器大小,不可以动态调整其大小的容器。
1. 创建Kotlin数组
- 使用arrayOf创建数组
- 用原生数组类型创建数组
- 创建空数组
- 创建数组时初始化内容
// 1. 初始化普通数组
val arrayNumber: Array<Int> = arrayOf(1,2,3,4,5)
// 往array中放任意类型
val arrayAny: Array<Any> = arrayOf(1, true, "2")
// 2. 创建空数组, 指定数据类型是需要在末尾加上?,表示可以运行Null数据
val arrayOfNUlls: Array<String?> = arrayOfNUlls<String>(5) // 指定数组大小为5
arrayOfNulls[0] = "1"
arrayOfNulls[1] = null
// 3. 动态创建数组, 利用array的构造函数,而不是arrayOf
// 创建一个Array<String> 初始化为[0,2,4,6,8]
val arr: Array<String> = Array(5) {i -> (i * 2).toString()}
// 也可以更简洁的写lambda
val arr: Array<String> = Array(5) {(it * 2).toString()}
arr.forEach { println(it) }
//4. 使用原生类型数组创建数组
val byteArr = ByteArray(5)
var charArr = CharArray(5)
// charArr[0] = "a" (报错,类型不对,单引号才是char,双引号是String)
charArr[0] = 'a'
charArr[1] = 'b'
charArr[2] = 'c'
charArr[3] = 'd'
charArr[4] = 'e'
// charArr[5] = 'f' (报错,超出范围)
charArr.forEach{ print(it) }
// 5. 统一初始化数组里的内容
val intArr = IntArray(10) { 100 } // 数组里所有数字都为100
2. 数组的常见操作
2.1 常见操作列表
操作 | 说明 |
---|---|
[ ] | 用下标访问数组内容 |
size | 返回数组大小 |
get(index) / set(index) | 获取数组下标内容 / 更改数组下标内容 |
iterator() | 遍历数组 |
equals(Array) | 比较两个数组是否为同一对象(比较地址) |
contentEquals(Array) | 比较两个数组的内容是否相同 |
2.2 循环遍历数组
Kotlin对数组的遍历比Java更灵活,下面的代码介绍了几种常用的。
// 1. 对数组进行for 循环遍历
val intArr = IntArray(10) { it + 1} // it为数组的当前下标,从0开始
for (item in intArr) {
print(item)
print(" ")
}
// 运行结果: 1 2 3 4 5 6 7 8 9 10
// 2. 用下标进行遍历
for (i in intArr.indices) {
print(i.toString() + "->" + intArr[i])
print(" ")
}
// 运行结果: 0->1 1->2 2->3 3->4 4->5 5->6 6->7 7->8 8->9 9->10
// 3. 用forEach进行遍历
intArr.forEach {
print(it)
print(' ')
}
// 运行结果: 1 2 3 4 5 6 7 8 9 10
// 4. 用forEachIndexed
intArr.forEachIndexed { index, item ->
print(index.toString() + "->" + item)
print(' ')
}
// 运行结果: 0->1 1->2 2->3 3->4 4->5 5->6 6->7 7->8 8->9 9->10
2.3 其他操作
一些其他的操作,比如复制数组和翻转数组。
// 反转数组
intArr.reverse()
intArr.forEach {
print("$it ")
}
// 输出结果: 10 9 8 7 6 5 4 3 2 1
// 复制数组
val intArr2 = intArr.copyOf()
println(intArr.contentEquals(intArr2))
// 输出结果: true