Kotlin 数组
Kotlin 数组教程展示了如何在 Kotlin 中使用数组。
数组是固定数量的值的集合。 数组项称为数组的元素。 每个元素都可以由索引引用。 数组从零开始。
使用诸如arrayOf()
或intArrayOf()
之类的函数或诸如IntArray
或FloatArray
之类的类创建 Kotlin 数组。
Kotlin 数组初始化
在第一个示例中,我们展示了如何在 Kotlin 中初始化数组。
KotlinArrayInit.kt
package com.zetcode
import java.util.Arrays
fun main() {
val nums = arrayOf(1, 2, 3, 4, 5)
println(Arrays.toString(nums))
val nums2 = (3..12).toList().toTypedArray()
println(Arrays.toString(nums2))
val nums3 = IntArray(5, { i -> i * 2 + 3})
println(Arrays.toString(nums3))
}
该示例创建三个数组。
val nums = arrayOf(1, 2, 3, 4, 5)
使用arrayOf()
函数创建一个数组。
println(Arrays.toString(nums))
我们使用Arrays'
toString()
方法来打印数组的内容。
val nums2 = (3..12).toList().toTypedArray()
在这一行中,我们根据一系列数字创建一个数组。
val nums3 = IntArray(5, { i -> i * 2 + 3})
该行使用IntArray
创建一个数组。 它以元素数量和工厂功能为参数。
[1, 2, 3, 4, 5]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[3, 5, 7, 9, 11]
这是输出。
Kotlin 数组索引
下一个示例显示 Kotlin 中的数组索引操作。
KotlinArrayIndexing.kt
package com.zetcode
fun main() {
val nums = intArrayOf(1, 2, 3, 4, 5)
println(nums[2])
nums[0] = 11
println(nums[0])
}
我们使用索引操作来获取和修改数组值。
println(nums[2])
我们用索引 2 打印该值,即数组中的第三个元素。 数组值的索引添加在一对方括号之间。
Kotlin 数组基本操作
以下示例介绍了 Kotlin 数组的一些基本操作。
KotlinArrayBasicOperations.kt
package com.zetcode
import java.util.Arrays
fun main() {
val nums = arrayOf(1, 2, 3, 4, 5)
println(nums.get(0))
nums.set(0, 0)
println(Arrays.toString(nums))
val nums2 = nums.plus(1)
println(Arrays.toString(nums2))
val slice = nums.sliceArray(1..3)
println(Arrays.toString(slice))
println(nums.first())
println(nums.last())
println(nums.indexOf(5))
}
在该示例中,我们检索和修改数组元素,创建切片,并获取元素的索引。
println(nums.get(0))
我们使用get()
函数获得索引为 0 的元素。
nums.set(0, 0)
set()
方法将指定索引处的数组元素设置为指定值。
val nums2 = nums.plus(1)
我们向数组添加一个新元素,创建一个新数组。 (请记住,数组是固定大小的;因此,创建了一个新的数组)。
val slice = nums.sliceArray(1..3)
使用sliceArray()
方法,我们从数组中创建一个切片。 索引都包含在内。
println(nums.first())
println(nums.last())
我们得到数组的第一个和最后一个元素。
println(nums.indexOf(5))
我们获得元素 5 首次出现的索引。
1
[0, 2, 3, 4, 5]
[0, 2, 3, 4, 5, 1]
[2, 3, 4]
0
5
4
这是输出。
Kotlin 数组内置方法
在下面的示例中,我们使用一些内置的数组方法。
KotlinArrayBuiltins.kt
package com.zetcode
fun main() {
val nums = intArrayOf(1, 2, 3, 4, 5)
val avg = nums.average()
println("The average is $avg")
val nOfValues = nums.count()
println("There are $nOfValues elements")
val sumOfValues = nums.sum()
println("The sum of values is $sumOfValues")
val maxValue = nums.max()
println("The maximum is $maxValue")
val minValue = nums.min()
println("The minimum is $minValue")
}
该示例计算数组的平均值,总和,最大值,最小值和大小。
val avg = nums.average()
average()
函数计算数组值的平均值。
val nOfValues = nums.count()
元素数由count()
确定。
The average is 3.0
There are 5 elements
The sum of values is 15
The maximum is 5
The minimum is 1
这是示例的输出。
Kotlin 数组计数
count()
方法对数组中的元素进行计数。
KotlinArrayCount.kt
package com.zetcode
fun main() {
val nums = intArrayOf(2, 3, 4, 5, 6, 7)
println("There are ${nums.count()} elements in the array")
val nOfEvens = nums.count { it % 2 == 0 }
println("There are $nOfEvens even values in the array")
}
该示例计算数组中值的总数和偶数的数量。
There are 6 elements in the array
There are 3 even values in the array
这是输出。
Kotlin 数组遍历
在下一个示例中,我们遍历 Kotlin 数组。
KotlinTraverseArrays.kt
package com.zetcode
fun main() {
val nums = arrayOf(1, 2, 3, 4, 5, 6, 7)
nums.forEach({ e -> print("$e ") })
println()
nums.forEachIndexed({i, e -> println("nums[$i] = $e")})
for (e in nums) {
print("$e ")
}
println()
val it: Iterator<Int> = nums.iterator()
while (it.hasNext()) {
val e = it.next()
print("$e ")
}
}
该示例使用四种不同的遍历方式遍历数组。
nums.forEach({ e -> print("$e ") })
我们使用forEach()
遍历数组。 此方法对数组的每个元素应用操作。 在我们的情况下将其打印出来。
nums.forEachIndexed({i, e -> println("nums[$i] = $e")})
forEachIndexed()
在每个元素上执行给定的操作,为元素提供顺序索引。
for (e in nums) {
print("$e ")
}
我们在for
循环中遍历数组。
val it: Iterator<Int> = nums.iterator()
while (it.hasNext()) {
val e = it.next()
print("$e ")
}
最后,我们使用迭代器和while
循环遍历数组。
1 2 3 4 5 6 7
nums[0] = 1
nums[1] = 2
nums[2] = 3
nums[3] = 4
nums[4] = 5
nums[5] = 6
nums[6] = 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
这是示例的输出。
Kotlin 数组排序
我们展示了如何对 Kotlin 数组进行排序。
KotlinArraySort.kt
package com.zetcode
fun main() {
val nums = arrayOf(7, 3, 3, 4, 5, 9, 1)
val sortedNums = nums.sortedArray()
println(Arrays.toString(sortedNums))
val sortedNumsDesc = nums.sortedArrayDescending()
println(Arrays.toString(sortedNumsDesc))
}
该示例对数组进行排序,其中sortedArray()
为升序,sortedArrayDescending()
为降序。 该方法创建新的排序数组。
[1, 3, 3, 4, 5, 7, 9]
[9, 7, 5, 4, 3, 3, 1]
这是示例的输出。
Kotlin 二维数组
在 Kotlin 中,我们可以创建二维数组。
KotlinArrayTwoDim.kt
package com.zetcode
fun main() {
val array = arrayOf(intArrayOf(1, 2),
intArrayOf(3, 4),
intArrayOf(5, 6, 7))
println(Arrays.deepToString(array))
}
该示例通过将intArrayOf()
函数调用嵌套到arrayOf()
函数中来创建二维数组。
[[1, 2], [3, 4], [5, 6, 7]]
这是输出。
Kotlin 数组过滤
使用filter()
方法,我们可以过滤数组中的数据。
KotlinArrayFilter.kt
package com.zetcode
fun main() {
val nums = arrayOf(1, -2, 3, 4, -5, 7)
nums.filter { e -> e > 0 }.forEach { e -> print("$e ") }
}
本示例创建一个正负整数数组。 filter()
方法仅用于拾取正值。
1 3 4 7
这是输出。
Kotlin 数组查找元素
我们可以使用find()
和findLast()
找到元素。
KotlinArrayFind.kt
package com.zetcode
fun main() {
val nums = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val firstEven = nums.find { it % 2 == 0 }
println("The first even value is: $firstEven")
val lastEven = nums.findLast { it % 2 == 0 }
println("The last even value is: $lastEven")
}
该示例在数组中查找第一个和最后一个偶数值。
The first even value is: 2
The last even value is: 8
这是输出。
Kotlin 数组归约
归约是将数组值聚合为单个值的终端操作。 reduce()
方法对累加器和数组中的每个元素(从左到右)应用一个函数,以将其减小为单个值。
KotlinArrayReduce.kt
package com.zetcode
fun main() {
val nums = intArrayOf(2, 3, 4, 5, 6, 7)
val total = nums.reduce { product, next -> product * next }
println(total)
}
我们使用reduce()
方法从数组元素计算乘积。
val total = nums.reduce { product, next -> product * next }
product
是累加器,next
是数组中的下一个值。
5040
这是输出。
Kotlin 数组all()
如果所有元素都匹配给定谓词,则all()
方法返回true
。
KotlinArrayAll.kt
package com.zetcode
fun main() {
val nums = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val hasAllEvens = nums.all { it % 2 == 0 }
if (hasAllEvens) {
println("The array contains only even values")
} else {
println("The array contains odd values")
}
}
该示例检查数组元素是否全部为偶数。
The array contains odd values
该数组包含一些奇数值。
Kotlin 数组any()
如果至少一个元素与给定谓词匹配,则any()
方法返回true
。
KotlinArrayAny.kt
package com.zetcode
fun main() {
val nums = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val hasEvenVals = nums.any { it % 2 == 0 }
if (hasEvenVals) {
println("The array contains even values")
} else {
println("The array does contain even values")
}
}
该示例检查数组元素是否包含任何偶数值。
The array contains even values
这是输出。
在本教程中,我们介绍了 Kotlin 数组。 您可能也对相关教程感兴趣: Kotlin 列表教程, Kotlin 设置教程, Kotlin 映射教程或列出所有 Kotlin 教程 ]。