如何通过提供大小在Kotlin中创建一个像Java一样的数组?

Kev*_*hew 66 java arrays arraylist kotlin

我怎样才能像在java中一样创建数组?

int A[] = new int[N];
Run Code Online (Sandbox Code Playgroud)

我怎么能在Kotlin做到这一点?

hot*_*key 119

根据参考,数组按以下方式创建:

  • 对于Java的基本类型有不同的类型IntArray,DoubleArray等等.它存储拆箱值.

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

    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)
    
    Run Code Online (Sandbox Code Playgroud)

    第一个是呈三角在Java中,它只是创建了一个基本数组充满了默认值,例如零Int,falseBoolean.

  • 非原始数组由Array<T>类表示,其中T是项类型.

    T仍然可以是Java(Int,, Boolean...)中的类型基元之一,但是里面的值将与Java相同Integer,Double依此类推.

    此外,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 }
    
    Run Code Online (Sandbox Code Playgroud)

  • `Array <Int>(size)`不编译.那是因为你不能在不提供元素的情况下创建一个不可为空的数组. (13认同)
  • @KirillRakhman,感谢您的评论,这是一个无意的错误。固定的。 (3认同)

Ale*_*Pes 11

这是字符串数组 init 的简单示例

        var names = Array<String>(<AnotherArray.size>) { i -> "" }
Run Code Online (Sandbox Code Playgroud)

科特林文档