Kotlin - 配列宣言、初期化方法

配列を宣言して初期化する方法を紹介します。

1. 空の配列宣言

以下の方法で特定の型の空の配列を宣言できます。

  • emptyArray<Int>()
  • arrayOf<Int>()

val arr: Array<Int> = emptyArray<>() のように変数に型を入力すると、後ろの型は省略できます。

fun main() {

    val arr = emptyArray<Int>()
    println("arr: ${arr.contentToString()}")

    val arr2 = arrayOf<Int>()
    println("arr: ${arr2.contentToString()}")
}

Output:

arr: []
arr: []

2. 配列宣言時、初期値設定

arrayOf<Type>(values) で配列に初期値を設定できます。 (values)で型がわかるので<Type>は省略しても構いません。

fun main() {

    val arr = arrayOf<Int>(1, 2, 3, 4)
    println("arr: ${arr.contentToString()}")

    val arr2 = arrayOf("a", "b", "c")
    println("arr: ${arr2.contentToString()}")
}

Output:

arr: [1, 2, 3, 4]
arr: [a, b, c]

3. 同じ値で配列を初期化する

Array(size) { value } は配列を size サイズだけ生成し、要素をすべて 10 に設定します。

fun main() {

    val arr = Array(5) { 10 }
    println("arr: ${arr.contentToString()}")
}

Output:

arr: [10, 10, 10, 10, 10]

4. 連続した数字で配列を初期化する

Array(size) { lambda } は size サイズの配列を生成し、要素は lambda の戻り値に設定されます。

lambdaに渡されるitは要素のindex値となり、以下のように連続した数字で配列を初期化できます。

fun main() {

    val arr2 = Array(5) { it -> it }
    println("arr: ${arr2.contentToString()}")

    val from = 10;
    val arr3 = Array(5) { it -> it + from }
    println("arr: ${arr3.contentToString()}")
}

Output:

arr: [0, 1, 2, 3, 4]
arr: [10, 11, 12, 13, 14]

5. Nullで配列を初期化する

arrayOfNulls<Type>(size)でnullでいっぱいの配列を作成できます。

fun main() {

    val arr = arrayOfNulls<Int>(5)
    println("arr: ${arr.contentToString()}")
}

Output:

arr: [null, null, null, null, null]

6. 基本データ型配列宣言

kotlinには、IntArrayBooleanArrayDoubleArrayLongArrayなど、基本的なデータ型配列を提供します。

このような配列を生成するときは、 intArrayOf(), booleanArrayOf() などを使って生成できます。

fun main() {

    val arr: IntArray = intArrayOf(1, 2, 3)
    println("arr: ${arr.contentToString()}")

    val arr2: BooleanArray = booleanArrayOf(false, true, false)
    println("arr: ${arr2.contentToString()}")

    val arr3: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)
    println("arr: ${arr3.contentToString()}")
}

Output:

arr: [1, 2, 3]
arr: [false, true, false]
arr: [1.0, 2.0, 3.0]
codechachaCopyright ©2019 codechacha