容器类型

数组

在Kotlin中,数组类型分为:

  1. 原生类型数组,他在内存中是连续存储的基本类型值的集合,不包含对象头信息,因此可以更高效地存储大量的基本类型数据。主要包括:

    1. IntArray,对应基本类型int

    2. DoubleArray,对应基本类型double

    3. FloatArray,对应基本类型float

    4. LongArray,对应基本类型long

    5. ShortArray,对应基本类型short

    6. ByteArray,对应基本类型byte

    7. BooleanArray,对应基本类型boolean

  2. 对象类型数组,数组元素是对象,包含对象头和实际数据。与原生类型数组不同,对象类型数组不能直接用于高性能计算:

    1. Array

    2. Array<Any>

Kotlin中的数组是不可变的,即数组创建后其大小和元素类型就不能更改。如果需要修改数组的元素,可以使用相应的数组下标运算符进行赋值操作。同时,Kotlin也提供了许多方便的函数和运算符来处理数组,例如size属性、forEach函数、filter函数等等。

创建数组

// 创建一个 Array<String> 初始化为 ["0", "1", "4", "9", "16"]
val asc = Array(5) { i -> (i * i).toString() }

// 创建一个原生数组,指定长度
val arr = IntArray(5)

// 创建一个原生数组,指定元素
val x: IntArray = intArrayOf(1, 2, 3)

// 创建一个原生数组,使用 lambda 表达式初始化数组中的值,it代表循环索引
var arr = IntArray(5) { it * 1 } // 数组的值为 [0, 1, 2, 3, 4]

// 创建一个原生数组,使用 lambda 表达式初始化数组中的值
val arr = IntArray(5) { 42 } // 数组的值为 [42, 42, 42, 42, 42] 

获取长度

数组的长度获取是通过访问数组的size属性来获得的:

val arr = intArrayOf(1, 2, 3)
println(arr.size) // 3

访问数组元素

数组的访问使用[]运算符完成:

val arr = intArrayOf(1, 2, 3, 4, 5)
println(arr[0]) // 输出 1
println(arr[3]) // 输出 4
arr[2] = 10
println(arr[2]) // 输出 10

数组的循环

val arr = arrayOf(1, 2, 3, 4, 5)

// for 循环
for (i in arr.indices) {
    println(arr[i])
}

// for in 循环
for (element in arr) {
    println(element)
}


// while循环
var i = 0
while (i < arr.size) {
    println(arr[i])
    i++
}

// forEach循环
arr.forEach { item ->
    println(item)
}

// forEachIndexed
arr.forEachIndexed { index, number ->
    println("Element $index is $number")
}

最后更新于