在Java中,数组可以这样初始化:

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

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


当前回答

在Java中,数组可以这样初始化:

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

但是在Kotlin中,数组初始化的方式有很多,比如:

任何泛型类型的数组都可以使用arrayOf()函数:

val arr = arrayOf(10, 20, 30, 40, 50)

val genericArray = arrayOf(10, "Stack", 30.00, 40, "Fifty")

使用Kotlin的实用函数可以初始化数组

val intArray = intArrayOf(10, 20, 30, 40, 50)

其他回答

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

详见Kotlin -基本类型。

你也可以提供一个初始化函数作为第二个参数:

val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]

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

    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 i.e. 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 DrawerItem(var icon: Int, var name: String) {

}

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

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

产生几乎相同的结果:

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

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

我认为第一个选项更有可读性。这两个工作。

你也可以使用ArrayList来填充,然后返回一个数组。 方法将在列表中添加10,000个Item类型的元素,然后返回一个Item数组。

private fun populateArray(): Array<Item> {
    val mutableArray = ArrayList<Item>()
    for (i in 1..10_000) {
        mutableArray.add(Item("Item Number $i" ))
    }
    return mutableArray.toTypedArray()
}

Item数据类看起来像这样:

data class Item(val textView: String)

这个问题已经有了很好的答案。 这里是一个合并的创建int数组。

创建具有特定值的数组。 var arr = intArrayOf(12,2,21,43,23) var arr = arrayOf<Int>(12,2,21,43,23)

[12, 2, 21, 43, 23]

填充特定元素。这里是1。 var arr = IntArray(5).apply{fill(1)} val arr = IntArray(5){1}

[1, 1, 1, 1, 1]

用小于20的随机数填充大小为5的数组 val arr = IntArray(5) {Random.nextInt(20)}

[0, 2, 18, 3, 12]

根据位置填充数组元素。 这个数组是5的倍数。 val arr = IntArray(5) {i -> (i + 1) * 5}

[5, 10, 15, 20, 25]