懐かしむためのアレ

どうでもいいこと書きます

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が返る