【问题标题】:How can I create an array in Kotlin like in Java by just providing a size?如何仅通过提供大小来像在 Java 中一样在 Kotlin 中创建数组?
【发布时间】:2016-05-17 03:43:05
【问题描述】:

如何像在 java 中一样创建数组?

int A[] = new int[N];

如何在 Kotlin 中做到这一点?

【问题讨论】:

标签: java arrays arraylist kotlin


【解决方案1】:

根据reference,数组的创建方式如下:

  • 对于 Java 的原始类型,有不同的类型 IntArrayDoubleArray 等,它们存储 unboxed 值。

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

    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 中的类似,它只是创建一个填充有默认值的原始数组,例如Int 为零,falseBoolean

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

    T 仍然可以是 Java 中的基本类型之一(IntBoolean、...),但其中的值将等效于 Java 的 IntegerDouble 等装箱。

    另外,T 可以同时是 nullable and non-null,例如 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 }
    

【讨论】:

  • Array&lt;Int&gt;(size) 无法编译。那是因为你不能在不提供元素的情况下创建一个不可为空的数组。
  • @KirillRakhman,感谢您的评论,这是一个无意的错误。固定。
【解决方案2】:

这里是字符串数组初始化的简单示例

        var names = Array<String>(<AnotherArray.size>) { i -> "" }

科特林doc

【讨论】:

    【解决方案3】:

    在 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 获取,等等。

    【讨论】:

      【解决方案4】:

      您可以使用IntArray 来创建它,就像变量声明一样 val A = IntArray(N)

      【讨论】:

        【解决方案5】:

        val A = FloatArray(N) //N是ar的大小

        【讨论】:

        • OP 需要一个整数数组,而不是浮点数。
        猜你喜欢
        • 2015-12-17
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多