Java

【初心者向け】Javaのmapの使い方を解説!サンプルコードも紹介!

「Javaのmapの使い方がわからない。宣言方法の方法やメソッドについて知りたい。誰か教えてほしい」

本記事ではこのような悩みを解決します。

Javaのmapは配列やlistよりも少し複雑で、初心者にとってはわかりにくいものですよね。しかしmapを使えるようになるとソースコードを綺麗に書くことができて便利なので、ぜひ覚えておきたいところです。

そこで本記事ではmapの使い方を初心者でもわかるように解説します。mapの宣言方法やメソッドについて1から説明しますね。

本記事を読むことでmapの基礎的な部分が理解できるようになっています。Java初心者の方はぜひこの機会にmapをマスターしてくださいね。

Javaのmapとは

まずはmapとは何かを説明するところから始めましょう。
mapを使うと何ができるのか、という部分についても触れていきます。

最初にmapの概念について理解しておきましょう。

mapとは何か

mapとは、「キー」と「値」をペアにして複数のデータを格納できるものです。たとえば出席名簿のデータをmapに格納する場合、出席番号を「キー」、氏名を「値」として入れることができます。

このように2つの紐付けられたデータを格納できるのがmapの特徴です。

mapとよく似たものに配列があります。配列も複数のデータを格納できるものです。
しかし配列の場合は、キーを指定することはできず、ただ値を入れることしかできません。配列とキーは使い所が異なるので注意してくださいね。

このように「キー」と「値」をペアにして格納できるのがmapの特徴です。

mapを使ってできること

「キー」と「値」をペアにして格納することができると、どんなメリットがあるのでしょうか。結論から言うと、mapから「値」を探すときに「キー」を目印にして探せるというのが良いのです。

たとえば、出席名簿のデータを格納したmapがあるとします。ここから「太郎さん」を探す場合、「キー」となる出席番号を目印にして探すことができるのです。

mapとはいわば辞書のようなものです。辞書を引くときにはキーワードを探し、そのキーワードの意味を調べます。同じように、mapでは「キー」を探すことで「値」を取得できるのです。

このように、mapを使うと「キー」を目印にして「値」を探せるというメリットがあるのです。

mapの基本的な使い方:hashmapで初期化する方法

ここからはmapの基本的な使い方を解説していきます。

まずmapを使えるようにする方法を見ていきましょう。
mapのインスタンスを生成するには、HashMapクラスを使う必要があります。具体的には次のように記述します。

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

宣言するときにキーと値のデータ型を指定する必要があることに注意してください。
たとえは、キーをInteger、値をStringにする場合は以下のように書きます。

import java.util.HashMap;
import java.util.Map;
 
public class Main {
  public static void main(String[] args) throws Exception {
        Map<Integer, String> map = new HashMap<>();
    }
}

このように記述すればHashMapクラスでmapをインスタンス化することができます。mapにデータを追加する方法、追加したデータを出力する方法は後々紹介していきますね。

mapで主に使用するメソッド

宣言方法がわかったところで、mapで主に使われるメソッドについて見ていきましょう。
ここでは次のメソッドについて解説します。

  • putメソッド
  • getメソッド
  • keySetメソッドとvaluesメソッド

これらのメソッドの使い方を覚えることで、mapにデータを追加したり取得したり、様々な操作することができるようになります。

以下ではサンプルコードも紹介していますので、ぜひ手を動かしながら学んでみてくださいね。

putメソッドの使い方

putメソッドを使うと、mapにデータを追加することができます。
次のサンプルコードを見てください。

import java.util.HashMap;
import java.util.Map;

public class Main {
           public static void main(String[] args) throws Exception {
                      Map<Integer, String> map = new HashMap<>();
 
                      map.put(1, “田中”);
                      map.put(3, “鈴木”);
                      map.put(5, “高橋”);
           }
}

このコードでは、mapを使って3つのデータを順番に格納しています。

putメソッドは第1引数に「キー」、第2引数に「値」を指定することでデータを追加できます。

getの使い方

getメソッドを使うとmapに格納したデータを取得することができます。

先ほどのコードにgetメソッドを使った行を追加しました。

import java.util.HashMap;
import java.util.Map;

public class Main {
           public static void main(String[] args) throws Exception {
                      Map<Integer, String> map = new HashMap<>();

                      map.put(1, “田中”);
                      map.put(3, “鈴木”);
                      map.put(5, “高橋”);

                      System.out.println(map.get(1));
                      System.out.println(map.get(3));
                      System.out.println(map.get(5));
           }
}

◯実行結果

Documents $ 1java test.java
田中
鈴木
高橋
Documents $ 1

このコードでは、getメソッドを使ってデータを出力しています。getメソッドは引数に「キー」を指定することで、そのキーの値を取得できます。

このようにキーを指定するだけで簡単にデータを取り出せるのがmapのメリットと言えますね。

keySetメソッド、valuesメソッドの使い方

続いてkeySetメソッドを使ってmapのすべてのキーを出力する方法を見ていきましょう。

mapのすべてのキーを出力する場合は、keySetメソッドを使用するのが便利です。keySetメソッドは次のようにfor文と組み合わせて使用することが多いです。

import java.util.HashMap;
import java.util.Map;

public class Main {
           public static void main(String[] args) throws Exception {
                      Map<Integer, String> map = new HashMap<>();
 
                      map.put(1, “田中”);
                      map.put(3, “鈴木”);
                      map.put(5, “高橋”);
 
                      System.out.println(map.get(1));
                      System.out.println(map.get(3));
                      System.out.println(map.get(5));
 
                      for(Integer key : map.keySet()) {
                                  System.out.println(key);
                      }
           }
}

◯実行結果

Documents $ 1java test.java
田中
鈴木
高橋
1
3
5
Documents $ 1

このコードでは、 map.keySetでmapのキーをすべて取得した後、for文を使って1つずつキーを出力させています。

このようにすべてのキーを取得するには、keySetメソッドが便利です。

キーではなく、mapの値をすべて取得する場合は、valuesメソッドを使います。

valuesメソッドもfor文と組み合わせて使用します。

import java.util.HashMap;
import java.util.Map;

public class Main {
           public static void main(String[] args) throws Exception {
                      Map<Integer, String> map = new HashMap<>();
 
                      map.put(1, “田中”);
                      map.put(3, “鈴木”);
                      map.put(5, “高橋”);
 
                      System.out.println(map.get(1));
                      System.out.println(map.get(3));
                      System.out.println(map.get(5));
 
                      for (String val : map.values()) {
                                  System.out.println(val);
                      }
           }
}

◯実行結果

Documents $ 1java test.java
田中
鈴木
髙橋
田中
鈴木
高橋
Documents $ 1

このコードでは、map.valuesでmapの値をすべて取得した後、for文を使って1つずつ値を出力させています。

このように、キーを取得する場合はkeySetメソッド、値を取得する場合はvaluesメソッドを使うのが良いです。

まとめ

本記事ではJavaのmapの使い方を解説してきました。mapがどんなものかおわかり頂けたでしょうか?

mapを使いこなせるようになると、格納したデータを取り出して使うような処理を書くとき、便利な場合があります。
また、putメソッドやgetメソッドなどを使いこなせるようになると、より柔軟にmapを扱えるようになり、より高度なアプリが作れるようになるでしょう。
mapは実務でも使う頻度が高いので、ぜひとも習得したい文法の1つです。

本記事がJava初心者にとって有意義なものとなれば幸いです。

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。