📱
Android & Kotlin : 2次元配列をあつかう
はじめに
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