Kotlin - 数组


数组用于在单个变量中存储相同数据类型的多个项目,例如单个变量名称下的整数或字符串。

例如,如果我们需要存储 1000 名员工的姓名,那么我们可以简单地定义一个容量为 1000 的字符串数组,而不是创建 1000 个不同的字符串变量。

与任何其他现代编程语言一样,Kotlin 也支持数组,并提供广泛的数组属性和支持函数来操作数组。

在 Kotlin 中创建数组

要在 Kotlin 中创建数组,我们使用arrayOf()函数,并将值放入其中以逗号分隔的列表中:

val fruits = arrayOf("Apple", "Mango", "Banana", "Orange")

我们可以选择提供如下数据类型:

val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")

或者,可以使用arrayOfNulls()函数创建一个给定大小的数组,其中填充空元素。

基本类型数组

Kotlin 还具有一些内置工厂方法来创建原始数据类型的数组。例如,创建整数数组的工厂方法是:

val num = intArrayOf(1, 2, 3, 4)

其他可用于创建数组的工厂方法:

  • byteArrayOf()

  • charArrayOf()

  • 短数组()

  • longArrayOf()

获取和设置数组的元素

我们可以使用方括号内的索引号来访问数组元素。Kotlin 数组索引从零 (0) 开始。因此,如果您想访问数组的第 4 个元素,则需要提供 3 作为索引。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")
  
   println( fruits [0])
   println( fruits [3])
   
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Apple
Orange

Kotlin 还提供get()set()成员函数来获取和设置特定索引处的值。检查以下示例:

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")
  
   println( fruits.get(0))
   println( fruits.get(3))
   
   // Set the value at 3rd index
   fruits.set(3, "Guava")
   println( fruits.get(3)) 
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Apple
Orange
Guava

Kotlin 数组长度

Kotlin 提供了名为size的数组属性,它返回数组的大小,即长度。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")
  
   println( "Size of fruits array " + fruits.size )

}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Size of fruits array 4

我们还可以使用count()成员函数来获取数组的大小。

循环遍历数组

我们可以使用for循环来循环数组。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")
  
   for( item in fruits ){
      println( item )
   }
   
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Apple
Mango
Banana
Orange

检查元素是否存在

我们可以使用in运算符和if...else来检查数组中是否存在元素。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")
  
   if ("Mango" in fruits){
      println( "Mango exists in fruits" )
   }else{
      println( "Mango does not exist in fruits" )
   }
   
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Mango exists in fruits

数组中的不同值

Kotlin 允许在数组中存储重复值,但同时您可以使用unique()成员函数获取存储在数组中的一组不同值。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange", "Apple")
   
   val distinct = fruits.distinct()
   for( item in distinct ){
      println( item )
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Apple
Mango
Banana
Orange

从数组中删除元素

我们可以使用drop()dropLast()成员函数分别从开头或最后删除元素。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange", "Apple")
   
   val result = fruits.drop(2) // drops first two elements.
   for( item in result ){
      println( item )
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Banana
Orange
Apple

检查空数组

我们可以使用isEmpty()成员函数来检查数组是否为空。如果数组为空,该函数返回 true。

例子

fun main(args: Array<String>) {
   val fruits = arrayOf<String>()
   println( "Array is empty : " + fruits.isEmpty())
   
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

"Array is empty : true

测验时间(面试和考试准备)

答案:D

解释

所有提到的关于 Kotlin 数组的陈述都是正确的。

问题 2 - 以下代码段的输出是什么?

fun main(args: Array<String>) {
   val fruits = arrayOf<String>("Apple", "Mango", "Banana", "Orange")

   println( fruits [2])

}

A-苹果

B-芒果

C-香蕉

D - 以上都不是

答案:C

解释

Kotlin 索引从 0 开始,因此在索引 2 处我们会找到第三个元素,即 Banana。

答案:D

解释

选项 D 是正确的,因为我们可以使用size属性或count()函数获取数组的大小。