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

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

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

この記事では、

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

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

なお、Javaの記事については、こちらにまとめています。

目次

Mapとは

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

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

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

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

Mapの使い方

HashMapで初期化

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

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

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

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

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

putで要素を追加

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

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

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

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

getで要素を取得

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

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

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

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

いかがでしたか?

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

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

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

for、foreachでループ処理

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

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

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

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

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

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

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のループ処理についての解説記事です!

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

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

Arrays.sortでソートする

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

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

List型に変換する

Java8のStreamを使う方法

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

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

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

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

key、valueをListに変換

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

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

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

Mapのkeyの値の取得、検索

keySetでkeyを取得

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

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

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

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

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

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

containsKeyでkeyを検索

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

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

Map型オブジェクト名.containsKey(検索するキー)

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

まとめ

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

いかがでしたか?

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

この記事を書いた人

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

目次