【Kotlin入門】mapの概念を理解して使い方をマスターしよう


Kotlinでmapの使い方がよくわからない
mapの種類がよくわからない

Kotlinでmapの使い方がそもそもよくわからなかったり、immutabilityについてよくわからず使いこなせないという方はいませんか?

こんにちは!エンジニアのかいです。Kotlinをこれから始めようとしている人、もしくは始めたての人であればプログラミングの基本であるmapについて悩んでいる人もいると思います。

そこで本日はKotlin初心者の方を対象にmapの使い方を基本的なところや、immutabilityについてなども詳しく解説していきます。

この記事はこんな人のために書きました。

  • Kotlinでmapの基本的な使い方を知りたい
  • mapの種類を理解して場面によってつかいわけたい

Kotlinのmapとは

さて、実際にmapの使い方を紹介していきたいところですが、中にはmapという概念についてよくわかっていない人もいると思うので簡単に説明しておきます。

Kotlinではmapと呼ばれていますが、他言語では、ハッシュや、辞書(ディクショナリ)と呼ばれています。これらは基本的にはKVS(Key Value Store)といってkeyとvalueを一つのセットにしてデータを管理しようというものです。

配列はindexと値をセットとしてデータを管理しますが、mapではそのindexがkeyにあたります。例えば{"name": "taro"}というKVSがあったら、基本的には"name"というkeyを指定して、"taro"というvalueを取り出します。

mapの種類を理解してよう

KVSはWebなどでも良く使われるのでmapについては少しプログラムを書いたことがある人ならだいたい分かっていただけたと思います。そこでKotlinのmapに焦点を戻していきましょう。

実はKotlinには大きく分けて2種類のmapがあります。その2つはimmutabilityという概念によって分けられていてこれはKotlinでは良く利用される概念なので理解しておきましょう。

immutabilityとは

immutabilityとは簡単に言えば、値が上書きできるか否かということです。

あれ、それはつまり定数か変数かということですか?という疑問も出ると思いますがそれは違います。

varかvalかということです。変数と定数、varとvalについて理解が浅い方はここで、ん?となる方もいると思うのでそれらの概念について説明しておきます。

まず大きい概念では、定数(const)と変数(variable)があります。そして変数の中に(var(mutable), val(immutable))があります。正確にはKotlinでは、定数(const)は変数の中のvalのなかにありますが、まあそこは今日は置いておきます。

そして、

const 常に同じ値。何回呼び出しても同じ値
variable
mutable
実装によって値が変わる
imuutable
最初に代入された値から変化しない。呼び出しごとに値を変えることは可能

というのがそれぞれの定義です。

つまりvalというのはこういうことですね。

mutableなmap

さてimmutabilityについて分かったところで話を戻しましょう。mapにはmutableとimmutableがあるんでしたね。

mutableなmapはmutableMapOfという関数を利用して作成します。

immutableなmap

immutable、つまり読み取り専用なmapはmapOfという関数を利用します。

実際に使ってみよう

さて、説明はほどほどにして実際に使ってみましょう。まずは、mapの作り方です。

まずはミニマムでみてみましょう。このようにkey to taroといった風に"to"を使って作成するのは最初は馴染みがあまりないかもしれませんが使っていればすぐ慣れます。

このように、keyの値を使ってvalueを呼び出せることがわかりますね。

また、先ほど説明した通りmapOfはreadOnlyなのでこのように値を変更することはできずコンパイルが通りません。次にmutableなmapについてもみていきます。

このように、値が書き換えられていることがわかりますね。当然ですが、mutableMapOfの中身は変更することはできますが、testmap自体はvalなので上書きはできません。

このようなコンパルは通らないということですね。

まとめ

さて、immutabilityに着目してmapの基本的な2種類の使い方を説明してきました。正しくコーディングすることで効率が良くバグの少ないプログラムを作ることができるのでしっかり違いを理解してつかいこなしていきましょう!

それでは!!

経験豊富なエンジニアに相談したいあなたへ

「IT業界の実情についてエンジニアの生の声を聞きたい、既にIT業務の仕事をしていて解決したい課題があるから相談にのってもらいたい」そんな要望はございませんか?

周りにエンジニアをやっている人がいないと、実際の現場のことがイメージできず不安ですよね。

侍エンジニア塾の無料体験レッスンでは、ご質問内容によって「現役エンジニア」があなたの開発したいサービスへ技術的なアドバイスや、未経験から内定を獲得する転職活動の極意をお伝えいたします。

下記の無料体験レッスン予約カレンダーよりお申し込みいただけます。あなたのご相談を心よりお待ちしております。

LINEで送る
Pocket

書いた人

かい

かい

日向徹かこよすぎか

[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説