我如何像提供Java一样通过Kotlin在Java中创建数组?


Answers:


153

根据参考资料,可以通过以下方式创建数组:

  • 对于Java的基本类型有不同的类型IntArrayDoubleArray等等。它存储拆箱值。

    它们是使用相应的构造函数和工厂函数创建的:

    val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
    val numbersFromOne = IntArray(size) { it + 1 }
    val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
    

    第一个与Java中的相似,它只是创建一个填充有默认值的原始数组,例如,对于IntfalseBoolean

  • 非基本数组由Array<T>类表示,其中T项类型。

    T还是可以的类型Java中的原始的一种(IntBoolean,...),但值内将等同盒装Java的IntegerDouble等等。

    同样,T可以像和一样为可为空和为非空StringString?

    这些以类似的方式创建:

    val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
    val strings = Array(size) { "n = $it" } 
    val myStrings = arrayOf("foo", "bar", "baz")
    
    val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
    val boxedZeros = Array(size) { 0 }
    

15
Array<Int>(size)不编译。那是因为如果不提供元素就不能创建不可为空的数组。
Kirill Rakhman

2
@KirillRakhman,谢谢您的发言,那是一个无心的错误。固定。
热键

0

在Kotlin中,创建大小为N的IntArray很简单。使用IntArray(n)或适当的类型,如热键答案中所详述。

当使用固定大小的数组时,可以使用Kotlin Destructuring

// Create fixed sized array
val point = IntArray(2)

// Access values directly
val (x, y) = point

在这种情况下,x将从索引0,y索引1等中获取。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.