Kotlin学習メモ2
つづき
今回はコレクションについてのメモ
Kotlinのコレクション
- リスト
- セット
- マップ
リスト
Kotlinではコレクションに読み取り専用なものと変更可能なものがある。
リストの場合、読み取り専用はlistOf関数、変更可能はmutableListOf関数を使用してオブジェクトを生成する。
// 読み取り専用 要素の追加や削除はできない val strs: List<String> = listOf('a', 'b', 'c') strs.add('d') // -> エラー // 変更可能 val strs: MutableList<String> = mutableListOf('a', 'b', 'c') strs.add('d') // -> [a, b, c, d]
MutableListはListを継承して要素の追加、削除のメソッドが定義されているので 以下のようなことできてしまい、Listはイミュータブル(変更不可)ではなく、あくまで読み取り専用
val ints = mutableListOf(1, 2, 3) val list: List<Int> = ints ints.add(4) // ints -> [1, 2, 3, 4] // list -> [1, 2, 3, 4]
セット
集合を表すコレクション。重複がない。
読み取り専用と変更可能はそれぞれ、setOf関数とmutableSetOf関数でオブジェクトを生成できる。
順序が保証されていないので、リストのようにインデックスでアクセスできない。
val ints: Set<Int> = setOf(1, 2, 3, 4, 4) ints // -> [1, 2, 3, 4] val ints: Set<Int> = mutableSetOf(1, 2, 3, 4) ints.add(10) ints // -> [1, 2, 3, 4, 10]
マップ
キーと値を持つコレクション。
キーを指定すると対応した値が取り出せる。
キーと値はそれぞれ型を指定することができる。
読み取り専用と変更可能はそれぞれ、mapOfとmutableMapOf関数でオブジェクトを生成できる。
val map: MutableMap<Char, Int> = mutableMapOf('A' to 10, 'B' to 11) map // -> {'A'=10, 'B'=11} map['A'] // -> 10 map += 'F' to 15 map // -> {'A'=10, 'B'=11, 'F'=15} map['C'] // -> null - 存在しないキーはnullが返る