クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Kotlin

【Kotlin入門】連想配列のような表現ができるMapの使い方

前回紹介した List と同じく、kotlin でも使われる頻度が高いのが Map です。

PHP 経験者だと連想配列と言えばしっくりくるかもしれません。

キーと値のセットで 1 つの要素を管理できるので、直感的にわかりやすい構造になっています。

今回はこの Map の活用法について紹介していきます。

Mapの定義の仕方

Map はキーと値のセットで管理すると説明しますが、変数の宣言の仕方は以下の通りです。

val places : Map = mapOf("kyoto" to "京都", "hanshin" to "阪神", "tokyo" to "東京")

println("${places["kyoto"]}です")
println("${places["hanshin"]}です")
println("${places["tokyo"]}です")

実行すると以下の結果が出力されます。

京都です
阪神です
東京です

ポイントは、Map の後の <> 内のジェネリクスです。

今回はキーも値も String にしましたが、ここの型を変えれば他の組み合わせの情報を管理できます。

val places : Map = mapOf("kyoto" to true, "hanshin" to true, "tokyo" to false)

println("京都競馬場は右回りですか?:${places["kyoto"]}")
println("阪神競馬場は右回りですか?:${places["hanshin"]}")
println("東京競馬場は右回りですか?:${places["tokyo"]}")

例えば、値を Boolean にすると以下のような表現ができます。

京都競馬場は右回りですか?:true
阪神競馬場は右回りですか?:true
東京競馬場は右回りですか?:false

値の変更を許可する場合はMutableMap

List の時もそうでしたが、Map も最初に格納した情報から変更ができません。

キーや値の情報を変更したり、新たなキーバリューを追加する場合は MutableMap を使います。

val places : MutableMap = mutableMapOf("kyoto" to "京都", "hanshin" to "阪神", "tokyo" to "東京")

places.put("nakayama", "中山")

println("${places["kyoto"]}です")
println("${places["hanshin"]}です")
println("${places["tokyo"]}です")
println("${places["nakayama"]}です")

無事に「中山」が追加できましたね。

京都です
阪神です
東京です
中山です

情報を削除したい場合は、remove() でキーを指定します。

MutableList の時と同じ要領ですね。

val places : MutableMap = mutableMapOf("kyoto" to "京都", "hanshin" to "阪神", "tokyo" to "東京")

places.remove("kyoto")

println("${places["kyoto"]}です")

ちなみに、存在しないキーを使うとエラーにはならずに null が返ります。

ここが List の時とは違った挙動となる部分です。

nullです

まとめ

Map の使い方について紹介しました。

情報に順序を持たせたい場合は List を使い、欲しい情報が特定できる場合は Map を利用します。

特に大量のデータを検索をする際にパフォーマンスが変わってくるので、何でもかんでも List を使わないように Map と上手く使い分けをしていきましょう。

別途、値だけを保持する Set というものもありますが、私はあまり使う機会がないので紹介は省きます。

やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

created by Rinker
¥2,592
(2018/09/19 11:06:02時点 Amazon調べ-詳細)

あなたにオススメ