在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
当前回答
在Kotlin中,我们可以使用arrayOf(), intArrayOf(), charArrayOf(), booleanArrayOf(), longArrayOf()函数来创建数组。
例如:
var Arr1 = arrayOf(1,10,4,6,15)
var Arr2 = arrayOf<Int>(1,10,4,6,15)
var Arr3 = arrayOf<String>("Surat","Mumbai","Rajkot")
var Arr4 = arrayOf(1,10,4, "Ajay","Prakesh")
var Arr5: IntArray = intArrayOf(5,10,15,20)
其他回答
对于二维数组:
val rows = 3
val cols = 3
val value = 0
val array = Array(rows) { Array<Int>(cols) { value } }
您可以将元素类型更改为您想要的任何类型(String, Class,…),并将值更改为相应的默认值。
I think one thing that is worth mentioning and isn't intuitive enough from the documentation is that, when you use a factory function to create an array and you specify it's size, the array is initialized with values that are equal to their index values. For example, in an array such as this: val array = Array(5, { i -> i }), the initial values assigned are [0,1,2,3,4] and not say, [0,0,0,0,0]. That is why from the documentation, val asc = Array(5, { i -> (i * i).toString() }) produces an answer of ["0", "1", "4", "9", "16"]
在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} // construct with size and fill with its index
我们也可以用内置函数创建数组,比如-
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()或任何基本类型来代替Int。
在我的情况下,我需要初始化我的抽屉项目。我通过以下代码填充数据。
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) {
}
这个问题已经有了很好的答案。 这里是一个合并的创建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]