如何在Kotlin中初始化一个数组?

在Java中,可以初始化一个数组,例如:

int numbers[] = new int[] {10, 20, 30, 40, 50} 

Kotlin的数组初始化是怎样的?

您可以:

 val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50) 

有关详细信息,请参阅Kotlin – 基本types 。

这是一个例子:

 fun main(args: Array<String>) { val arr = arrayOf(1, 2, 3); for (item in arr) { println(item); } } 

您还可以使用操场来testing语言function。

值得一提的是,当使用kotlin内build函数(例如intArrayOf()longArrayOf()arrayOf()等)时,您无法使用默认值(或所有值为所需值)初始化给定大小的数组,需要根据类构造函数进行初始化。

 // Array of integers of a size of N val arr = IntArray(N) // Array of integers of a size of N initialized with a default value of 2 val arr = IntArray(N, {i -> 2}) 

在Kotlin有几种方法。

 var arr = IntArray(size) // construct with only size 

然后,只需从用户或其他集合或任何你想要的初始值。

 var arr = IntArray(size, { 0 } ) // construct with size and fill array with 0 var arr = IntArray(size, { it * 1 } ) // construct with size and fill with its index 

我们也可以创build具有内置函数的数组,

 var arr = intArrayOf(1, 2, 3, 4, 5) // create an array with 5 values 

其他方式

 var arr = Array(size, { 0 } ) // it will create an integer array var arr = Array<String>(size, { "$it" } ) // this will create array with "0", "1", "2" and so on. 

您也可以使用doubleArrayOf()DoubleArray()或任何基元types来代替Int。

你可以使用这个方法

 var numbers=Array<Int>(size,init) var numbers=IntArray(size,init) var numbers= intArrayOf(1,2,3) 

 var numbers = Array<Int>(5, { i -> 0 }) 

init代表默认值(初始化)

我认为值得一提的是,从文档中不够直观的一点是,当使用工厂函数来创build数组并且指定它的大小时,数组将使用与其索引值相等的值进行初始化。 例如,在这样一个数组中: val array = Array(5, { i -> i }) ,赋值的初始值是[0,1,2,3,4]而不是[0,0,0,0,0] 。 这就是为什么从文档中, val asc = Array(5, { i -> (i * i).toString() })会生成一个["0", "1", "4", "9", "16"]

老问题,但如果你想使用范围:

 var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray() 

产生几乎相同的结果:

 var numbers = Array(5, { i -> i*10 + 10 }) 

结果:10,20,30,40,50

我认为第一个select是更可读一点。 两者都有效。

你可以试试这个:

 var a = Array<Int>(5){0} 

在我的情况下,我需要初始化我的抽屉项目。 我用下面的代码填充数据。

  val iconsArr : IntArray = resources.getIntArray(R.array.navigation_drawer_items_icon) val names : Array<String> = resources.getStringArray(R.array.navigation_drawer_items_name) // Use lambda function to add data in my custom model class ie DrawerItem val drawerItems = Array<DrawerItem>(iconsArr.size, init = { index -> DrawerItem(iconsArr[index], names[index])}) Log.d(LOGGER_TAG, "Number of items in drawer is: "+ drawerItems.size) 

自定义模型class-

 class DrawerItem(var icon: Int, var name: String) { } 

以这种方式初始化数组: val paramValueList : Array<String?> = arrayOfNulls<String>(5)