在Java中,可以初始化数组,例如:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化如何?
array()
在侧面注释中提到了(不建议使用的)函数:要创建数组,我们可以使用库函数array()并将项目值传递给它,以便array(1、2、3 )创建一个数组[1、2、3]。
val numbers = 1..5
这给从1到5的范围INT
在Java中,可以初始化数组,例如:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化如何?
array()
在侧面注释中提到了(不建议使用的)函数:要创建数组,我们可以使用库函数array()并将项目值传递给它,以便array(1、2、3 )创建一个数组[1、2、3]。
val numbers = 1..5
这给从1到5的范围INT
Answers:
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
有关详细信息,请参见Kotlin-基本类型。
您还可以提供一个初始化函数作为第二个参数:
val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]
intArrayOf
过arrayOf
?这样IntArray
有没有优势Array<Int>
呢?
listOf(10, 20, 30, 40, 50)
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/KotlinPackage
。我正在使用jdk1.8.0_241
Intellij IDEA
值得一提的是,使用科特林builtines时(例如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 }
IntArray(N) {i -> 2}
甚至(使用常量初始化时)IntArray(N) {2}
在科特林,有几种方法。
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。
var arr = IntArray(size, { it * 1 } )
与var arr = IntArray(size){it}
在科特林我们可以使用创建数组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)
你可以使用这种方法
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代表默认值(initialize)
init
在Array<Int>()
和中提供示例,IntArray()
这会有所帮助,到目前为止,您的答案并没有太大帮助。
科特林语言有专门的类来表示基本类型数组无开销拳击:例如- ,,IntArray
等我需要说的是,这些类没有继承关系的父类,但它们具有相同的一套方法和属性。它们每个还具有相应的工厂功能。因此,要在Kotlin中使用值初始化数组,只需输入以下内容:ShortArray
ByteArray
Array
val myArr: IntArray = intArrayOf(10, 20, 30, 40, 50)
...或这样:
val myArr = Array<Int>(5, { i -> ((i+1) * 10) })
myArr.forEach { println(it) } // 10, 20, 30, 40, 50
现在您可以使用它:
myArr[0] = (myArr[1] + myArr[2]) - myArr[3]
希望这可以帮助。
您可以这样创建一个Int Array:
val numbers = IntArray(5, { 10 * (it + 1) })
5是Int Array的大小。lambda函数是元素初始化函数。[0,4]中的'it'范围,以及[1,5]中的1个make范围
起源函数是:
/**
* An array of ints. When targeting the JVM, instances of this class are
* represented as `int[]`.
* @constructor Creates a new array of the specified [size], with all elements
* initialized to zero.
*/
public class IntArray(size: Int) {
/**
* Creates a new array of the specified [size], where each element is
* calculated by calling the specified
* [init] function. The [init] function returns an array element given
* its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
...
}
Arrays.kt中定义的IntArray类
您可以简单地使用现有的标准库方法,如下所示:
val numbers = intArrayOf(10, 20, 30, 40, 50)
不过,使用特殊的构造函数可能很有意义:
val numbers2 = IntArray(5) { (it + 1) * 10 }
您传递一个大小和一个lambda,以描述如何初始化值。这里是文档:
/**
* Creates a new array of the specified [size], where each element is calculated by calling the specified
* [init] function. The [init] function returns an array element given its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
我想知道为什么没有人给出最简单的答案:
val array: Array<Int> = [1, 2, 3]
根据对我的原始答案的评论之一,我意识到这仅在注释参数中使用时有效(这对我来说确实是出乎意料的)。
看起来Kotlin不允许在注释之外创建数组文字。
例如,使用args4j库中的@Option查看以下代码:
@选项( 名称=“ -h”, 别名= [“ --help”,“-?”], usage =“显示此帮助” ) var help:布尔=假
选项参数“别名”的类型 Array<String>
就我而言,我需要初始化我的抽屉物品。我用下面的代码填充数据。
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 numbers= intArrayOf()
下一个onCreate方法使用值初始化数组
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//create your int array here
numbers= intArrayOf(10,20,30,40,50)
}
在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)
简单方法:
对于整数:
var number = arrayOf <Int>(10,20,30,40,50)
保留所有数据类型
var number = arrayOf(10,“ string value”,10.5)
以这种方式初始化数组: val paramValueList : Array<String?> = arrayOfNulls<String>(5)
这样,您可以在koltin中初始化int数组。
val values: IntArray = intArrayOf(1, 2, 3, 4, 5,6,7)
我的答案补充了@maroun这些是初始化数组的一些方法:
使用数组
val numbers = arrayOf(1,2,3,4,5)
使用严格的数组
val numbers = intArrayOf(1,2,3,4,5)
混合矩阵类型
val numbers = arrayOf(1,2,3.0,4f)
嵌套数组
val numbersInitials = intArrayOf(1,2,3,4,5)
val numbers = arrayOf(numbersInitials, arrayOf(6,7,8,9,10))
能够从动态代码开始
val numbers = Array(5){ it*2}