【Kotlin/Android Studio】Map/MutableMapの使い方!追加/取得などの操作方法

この記事からわかること
- Android Studio/KotlinのMap/MutableMapの使い方
- キーと値でデータを保持する
- 取得や追加、削除などの操作方法
- サイズや空かどうか、フィルタリング、ソート、forループ
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Android:13
- Kotlin:1.8.20
Mapとは?
KotlinのMap
とはList
などと同じようにデータを複数保持できるコレクション型の1つとして定義されたデータ型です。Map
はキー(Key)と値(Value)の2つのペアでデータを保持する特徴があります。
Swiftなど他の言語では辞書(Dictionary)型などと呼ばれていることが多いです。
KotlinのMap
はSwiftの辞書型とは異なり、順序を保持することができます。またキーと値はNullableになっているのでnull
を含めることが可能になっています。また不変(Immutable)なコレクションであるMap
と可変な(Mutable)コレクションであるMutableMap
に分かれています。
定義方法
Map
は不変(Immutable)なコレクションであるとして定義されており、要素の変更や追加ができません。インスタンスを生成するにはmapOf
メソッドを使用し、key to value
の形式で記述していきます。
またキーには異なるデータ型を指定することも可能です。
値を取得する
Map
内のデータを取得するには[キー]
形式でキーを指定します。存在しないキーを指定した場合はnull
が返ります。
MutableMapとは?
一方MutableMap
は可変な(Mutable)コレクションとして定義されており、要素の変更や追加が可能になっています。そのため要素を追加するためのput
メソッドや削除するためのremove
メソッドが用意されています。
定義方法
インスタンスを生成するにはmutableMapOf
メソッドを使用し、key to value
の形式で記述していきます。
追加する
要素を追加したい場合はキー
を指定して格納するだけです。
他にもput
メソッドやputAll
メソッドを使用して追加することが可能です。
削除する
要素を削除したい場合はremove
メソッドの引数にキー
を指定します。
-=
演算子を使用しても削除することが可能です。
条件でフィルタリングする
ここからはMap/MutableMap
の両方に利用できるメソッドを紹介していきます。
条件を指定して要素をフィルタリングしたい場合はfilter
メソッドを使用します。引数には絞り込みたい条件を渡します。以下の動作を見ると分かりますが、filter
メソッドは元のインスタンスを変更しません。
そのため変数に格納することでフィルタリングされたリストのコピーを取得することができます。取得したリストはイミュータブルなMap
なのでミュータブルにしたい場合はtoMutableMap
メソッドを使用して変換することができます。
要素数を取得する:size
コレクションの要素数はsize
プロパティから取得できます。
中身が空か確認する:isEmpty
中身が空か確認するにはisEmpty
メソッドを使用します。空であればtrue
を返します。またisNotEmpty
メソッドはその逆です。
含まれているか確認する:contains
コレクションの中に要素が含まれているか確認するにはcontains(element: T)
メソッドを使用します。引数に対象の要素を渡します。
ソートする:toSortedMap
コレクション内をソートするにはtoSortedMap
メソッドを指定します。
条件でソートする:sortedBy
条件をつけて並び替えたい場合はentries
プロパティからエントリーを取得してsortedBy
メソッドを使用します。
中身を繰り返し取り出す:for
Map
の中身を繰り返し取り出すにはいくつか方法があります。
forループ
forEach
キー/値のみを取り出す
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。