Kotlin_1.2_数组Array

282 阅读2分钟

数组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]=10arr.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):查找指定元素最后一个角标