Kotlin阵列

时间:2020-02-23 14:37:29  来源:igfitidea点击:

在本教程中,我们将研究Kotlin阵列。
如果您不是Kotlin的新手,建议您阅读Kotlin简介教程,以确保您快速掌握本教程。

Kotlin阵列

Kotlin中的数组不是本机数据结构。
相反,它们是数组类型的类。
我们可以将Kotlin Array称为collections类。

Kotlin数组声明– arrayOf函数

以下是我们初始化数组的不同方法。
为了初始化和设置数组的元素,我们使用arrayOf函数。

val countries = arrayOf("San Franceco","USA","China","Australia","Sri Lanka")

Kotlin编译器隐式推迟了Array的类型。
要指定类型,我们可以将函数设置为:

val countries = arrayOf<String>("San Franceco","USA","China","Australia","Sri Lanka") //an array of Strings

类型为Any的通用数组可以定义为:

val myArray = arrayOf("Hi",1,1L,1.2,false)
val array1 = arrayOf(1,2,3,4)
val array2 = arrayOf(1L,2L,3L,4L)
val array3 = arrayOf<Long>(1,2,3,4) //this is the same as array2. An array of longs

访问和修改数组中的元素

通常,我们使用数组的索引来访问和修改数组的元素。
在Kotlin数组中,我们可以另外使用getset方法,如下所示。

val array1 = arrayOf(1,2,3,4)
val array3 = arrayOf<Long>(1,2,3,4)

array3.get(0)
array3[0]

array1[1] = 6
array1.set(1,6)

println("Size is ${array1.size}") //Size is 4

注意:要获取数组的长度,我们调用函数size

Kotlin阵列的实用程序功能

Kotlin为我们提供了实用函数,可使用以下函数来初始化基元数组:charcharOfOf(),booleanArrayOf(),longArrayOf(),shortArrayOf(),byteArrayOf()。

使用这些函数可以将Array类编译成int []char []byte []等。

此外,当您的代码库包含Kotlin和Java代码时,这些原始类型数组也很方便。
Kotlin类型数组可以作为原始类型数组传递给Java代码。
此外,这些原始类型数组可提高项目的性能。

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

Kotlin Array()构造函数

构造函数需要两个参数。
sizeinit
我们在init参数中指定一个lambda表达式,如下所示。

val array = Array(6) {i-> i*2}
//or
val array = Array(6,{i-> i*2})

for(element in array)
println(element)

在上面的代码中,第二个参数接受一个lambda函数,该函数获取数组元素的索引,然后返回要在数组中该索引处插入的值。

val array = Array(6) {i-> i*0.1} //Array of Doubles

for(element in array)
println(element)
val array = Array(6) {i-> "Hi "+i}

for(element in array)
println(element)

//prints the following in the console
Hi 0
Hi 1
Hi 2
Hi 3
Hi 4
Hi 5

如果设置了数组构造函数的大小,但未按如下所示进行初始化,则编译器将引发错误。

var intArray = Array(6) //would not compile
var intArray2 : Array<IntArray> //this is fine. Since we've just defined the type of var.

如下所示,使用原始类型的Array时,无需实例化,如下所示。

val intArray = IntArray(6)

  for(element in intArray)
  {
      println(element) //all elements are zero here.
  }

如果未实例化,则将大小分配给基本类型数组将为所有元素分配默认值。

将泛型数组转换为原始数组

通过在通用数组实例上调用方法toIntArray(),toCharArray()等,可以将通用Array类转换为原始数组类型。
以下片段演示了相同的内容。

val array1 = arrayOf(1,2,3,4)
var intArray1 : IntArray = array1.toIntArray()

Kotlin阵列范例

  • 反转数组

  • 反转阵列

  • 数组元素的总和

  • 在数组中附加元素

  • 用给定元素填充索引范围
    注意:fill方法不受限于当前数组的大小。
    我们也可以超出数组的索引限制来增加数组的长度,如下所示。

  • 将数组追加到当前数组