数组Array的创建
数组用Array表示,其中数值类型、布尔类型、字符类型都有数组的表示形式。
arrayOf()
fun main() {
var int_array: Array<Int> = arrayOf(1,2,3)
//变量的数据类型可以省略,即:
var boolean_array = arrayOf(true, false, true)
var string_array = arrayOf("Hello", "World","~")
}
这种方法也可以创建包含有不同数据类型的数组:
var arr = arrayOf(1,2,3,43.3f,'a',"Hello")
for (v in arr) {
print(v)
print("\t")
}
arrayOfNulls<Int>(3)
用于创建一个指定数据类型且可以为空元素的给定元素个数的数组:
var arr = arrayOfNulls<Int>(3)
arr[0] = 1
arr[1] = 2
arr[3] = 3
工厂函数Array()
Array() => 第一个参数表示数组元素的个数,第二个参数则为使用其元素下标组成的表达式。例如,Array(3,{i -> (i*2).toString()})中,因为数组中有三个元素,初始为0,1,2,那么第二个参数中的i初始值分别为0,1,2,然后带入第二个参数给定的表达式。
var arr = Array(5,{i -> (i+1).toString()})
for (i in arr) {
print(i)
print("\t")
}
原始类型数组
注意:没有stringArrayOf()。
fun main() {
var int_array = intArrayOf(1,2,3)
var boolean_array = booleanArrayOf(true,false,true)
}
如前所述,没有stringArrayOf()方法,但是在菜鸟教程中,据称这一类方法省去了装箱操作,因此效率更高,所以还需要记住。
数组的补充:常见操作
arr.withIndex():for循环遍历数组元素及其角标
fun main() {
var arr = arrayOf(1,2,3)
for ((index,it) in arr.withIndex()) {
println("$index : $it")
}
}
求最大值
fun main() {
val arr = arrayOf(1,2,3)
var max = 0
for (i in arr) {
if (max<i) {
max = i
}
}
println("maximum: ${max}")
}
arr[0]=10和arr.set(0,10):修改数组元素
fun main() {
val arr = arrayOf(1,2,3)
arr[0] = 133
arr.set(1,1999)
arr.forEachIndexed() {
index, it -> println("$index : $it")
}
}
// 0 : 133
// 1 : 1999
// 2 : 3
查找元素角标
-
indexOf(num):查找指定元素中第一个角标 -
indexOfFirst(num):查找指定元素中第一个角标 -
lastIndexOf(num):查找指定元素中最后一个角标 -
indexOfLast(num):查找指定元素最后一个角标