スライドショー

【Java入門】Mapの使い方総まとめ(HashMapで初期化、値のソート)

こんにちは!フリーランスのオータケです。

JavaにはMapという便利なクラスが存在します。

この記事では、

  • Mapとは
  • HashMapで初期化
  • putで要素を追加
  • getで要素を取得
  • for、foreachでループ処理
  • Arrays.sortでソートする
  • List型に変換する
  • Mapのkeyの取得、検索

など基本的な内容から具体的な内容についても解説していきます。今回はMapについて、使い方をわかりやすく解説します!

Mapとは

Mapは二つの要素から成ります。

一つ目は「キー」と呼ばれる値です。二つ目は「」になります。

「キー」は簡単にいえば、値につける名前だと思ってもらえば大丈夫です。値ひとつひとつに「キー」が存在しており、「キー」と「値」がペアになっているのがMapの特徴です。

このような形の構造にはどういった意味があるのでしょうか?便利なのでしょうか?それをこの記事で学んで頂ければ幸いです!

Mapの使い方

HashMapで初期化

まず、便利さを学ぶ前にMapを使うためには「初期化」を行わなければなりません。使うための準備ですね。

Mapはインターフェースですので、インスタンスを生成するにはそれを実装したクラスを使用する必要があります。実装したクラスでよく使われるのがHashMapクラスです。

MapのオブジェクトをHashMapクラスを使って宣言するには、以下のように記述します。

Map<キーの型名, 値の型名> オブジェクト名 = new HashMap<>();

その準備について学ぶためには次の記事がとてもわかりやすいですよ!

【Java入門】Map(HashMap)の宣言と初期化をする方法(定数化も解説)
更新日 : 2019年5月5日

putで要素を追加

そして、Mapの初期化方法を学んだあとは、要素を追加してみましょう。

以下のように記述します。

Map型オブジェクト名.put(キー, 値);

要素が何もない状態ではMapを使いこなすことはできません。次の記事でMapに値を追加する方法を解説しています。

【3分で理解】JavaのMapで値を追加する方法(put)
更新日 : 2019年5月22日

getで要素を取得

初期化、値の追加が終わったら次に値を取得する方法を知りましょう。配列などと違い、Mapで値を取得する場合はgetメソッドを使い、引数にキーを指定する必要があります。

以下のように記述します。

Map型オブジェクト名.get(キー);

次の記事ではその書き方や使い方を解説しています!

【Java入門】Map(連想配列)のキーと値を取得する方法
更新日 : 2019年4月29日

いかがでしたか?

配列と違って「キー」と「値」をペアで扱うという意味がわかって頂けたのでは無いかと思います。この項目ではMapの基本的な使い方について学びました。

次の項目ではこのMapをどうやって使っていくのかもっと深く知るための応用的な解説をしていきます。では次の項目を読んで理解しMapマスターになりましょう!

Mapの要素をループで処理する方法

for、foreachでループ処理

Mapに登録されているデータを一括で扱う際にはループで処理するのが一般的で相性がとてもいいです。

Javaにはforeachという命令はありませんが、他言語で言うところのforeachと同じ処理方法が備わっています。それを拡張for文といいます。

以下のように記述します。

for(型 変数名 : List名){
    System.out.println(変数名);
}

そのforeachと同じ効果を得られるループ処理について解説したのが次の記事です!

とても重要な記事ですので必見です!

【Java入門】Mapにfor文やforeachのループを使いキーと値を取得する
更新日 : 2019年4月12日

iteratorでループ処理

拡張for文の扱い方がわかった所でさらにループ処理を深掘りしてみましょう。

Iteratorという仕組みを使ってもループ処理を書くことができます。以下のように記述します。

for(Iterator<Map.Entry<キーの型名, 値の型名>> iterator = map.entrySet().iterator() ; iterator.hasNext() ;){
    Map.Entry<キーの型名, 値の型名> entry = iterator.next();
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

次の記事はそのIteratorを使ったMapのループ処理についての解説記事です!

【解決Java】Mapのループ処理でIteratorを使う方法
更新日 : 2019年5月21日

この項目ではループ処理について学んでいきました。

しかし、Mapの応用的な使い方はこれだけではありません。次の項目ではMapに登録されているデータのソート(並び替え)をしてみましょう!

Arrays.sortでソートする

Mapの値をソートしてみたいと思ったことがありませんか?もしくはMapのキー名でソートしてみたいと思ったことはありませんか?

Mapは配列やListと仕組みが違う特殊なコレクションであるため、ソートについて想像しづらい部分もあるかと思います。次の記事ではMapのソートについてわかりやすく丁寧に解説しています!

【Java】Map(HashMap・TreeMap)のkey・valueでソートする方法
更新日 : 2019年5月28日

List型に変換する

Java8のStreamを使う方法

まず、List型に変換する前にListとMapはどのような差や違いがあるのかを学んでおきましょう。

またJava8にも少し触れています。

【Java入門】List⇔Map変換でJava8のStreamを使う方法
更新日 : 2017年9月6日

ListとMapの違いがお分かり頂けましたでしょうか?

また変換方法についても解説されていたため、理解できればMapマスターへ近づいたといえるのではないでしょうか!?

key、valueをListに変換

少し難しく感じた方には、次の記事で変換の部分のみわかりやすく解説しています。

【Java入門】MapとListの相互変換まとめ(key、valueのList化)
更新日 : 2019年5月21日

この項目ではList型への変換について説明を行いました。

次の項目が最後になります。Map特有の「キー」について深く掘り下げた解説を行います。

Mapのkeyの値の取得、検索

keySetでkeyを取得

配列やListと違いMapには「キー」という仕組みが存在しています。Mapの「キー」の名前だけ取得するには、keySetメソッドを使用します。

以下のように記述します。

Map型オブジェクト名.keySet()

次の記事でくわしく解説されていますので、ぜひご覧ください!

【Java入門】MapのkeySetの意味と使い方
更新日 : 2019年4月25日

この記事では「キー」の一覧を取得する方法について解説を行いました。

次の記事はMapの中に特定の「キー」が含まれているかどうかを解説しています。

containsKeyでkeyを検索

Mapの中に特定の「キー」が含まれているかどうかは、containsKeyメソッドを使って判断します。

以下のように記述します。

Map型オブジェクト名.containsKey(検索するキー)
【5分でJava入門】MapのcontainsKeyの使い方と速度まとめ
更新日 : 2019年10月23日

配列やListの場合は「値」しか扱えないためそこに注目しますが、Mapは「キー」という仕組みが存在するためMapならではの処理について解説をしました。

まとめ

今回はMapについてまとめていきました。

いかがでしたか?

Mapは実践でも使う重要なクラスです。そして基本的なクラスの一つでもあります。今回の記事をよく読み返してMapマスターになりましょう!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

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

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