📱

Android & Kotlin : 2次元配列をあつかう

2022/10/19に公開

はじめに

Androidアプリを作っている際に、Kotlinで2次元配列を扱うやり方に戸惑いました。本記事では、その2次元配列の扱い方について簡単に説明します。

2次元配列に配列を追加していく例

Array型の2次元配列にarryOf関数で用意した配列を順々に追加していくサンプルコードです。

// 2次元配列を初期化
var twoDimensionalArray = arrayOf<Array<Int>>()

val array1 = arrayOf(1,1,1)
val array2 = arrayOf(2,2,2)
val array3 = arrayOf(3,3,3)

Log.d("Result", array1.contentToString())

// Arrayを2次元配列に追加
twoDimensionalArray += array1
twoDimensionalArray += array2
twoDimensionalArray += array3

// 出力
Log.d("Result", twoDimensionalArray.contentDeepToString())

すると出力は下記のようになります。

Result: [[1, 1, 1], [2, 2, 2], [3, 3, 3], [1, 1, 1]]

2次元配列をString型に変換するときは

.contentToString()

ではなく

.contentDeepToString()

を使います。

2次元配列の入れ子に要素を追加する場合

先程、arrayOf関数で用意した各々のArrayに要素追加してみます。

val array1 = arrayOf(1,1,1)
val array2 = arrayOf(2,2,2)
val array3 = arrayOf(3,3,3)

上記で用意したArrayを一度、mutableなListに変換し、要素をaddします。
そしてもう一度、 Array型に変換します。
下記の例では、「+=」で2次元配列の末尾に追加しています。

// MutableなListに変換
val array4 = array1.toMutableList()
// 0番目に要素を追加
array4.add(0, 7)
// 一番最後に要素を追加する
array4.add(array4.lastIndex+1, 8)
// Array型に変換
twoDimensionalArray += array4.toTypedArray()
Log.d("Result", twoDimensionalArray.contentDeepToString())

すると出力は下記のようになります。

Result: [[1, 1, 1], [2, 2, 2], [3, 3, 3], [7, 1, 1, 1, 8]]

おわりに

Kotlinで2次元配列を扱う際、他の言語のように一筋縄では行かず戸惑いましたが、上記のやり方で実現することができました。
本記事では詳細は省きますが、Kotlinで配列を扱う場合、immutable(変更不可能性)とmutable(変更可能性)を理解しておいたほうが良いことがわかりました。

Discussion