実際に書いてみる!JavaでHashMapを使う方法【初心者向け】

初心者向けにJavaでHashMapを使う方法について解説しています。HashMapクラスを用いることで、データベースや辞書のようなデータ構造を表現できます。実際にサンプルプログラムを書いているので、ぜひ理解しておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

この記事では、JavaのHashMapクラスを説明します。HashMapクラスを用いることで、データベースや辞書のようなデータ構造を表現できます。

実際にプログラムを書いて説明しているので、ぜひ参考にしてみてください。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

田島悠介

今回はHashMapクラスを使ってみよう。

大石ゆかり

田島メンター!HashMapというのは何ですか~?

田島悠介

HashMapクラスは連想配列に使うんだ。基本の構成を見てみよう。

大石ゆかり

はい!

HashMapクラスとは

HashMapとは、Mapインターフェースの実装クラスの一つです。

実装にハッシュ表を用いることが特徴です。

 

ハッシュ表とは

ハッシュ表とはキーと、それに対応する値を管理するための、データ構造の一つで、それぞれのキーは、一意なインデックス(索引)を持ちます。

インデックスがわかれば、その値を高速に(※1)参照できます。

キーからインデックスを求めるためにハッシュ関数(※2)を使用します。

(※1)一般には表のサイズに依存しない速度。
格納するデータ量が増えても、参照に要する時間が変化しません。

(※2)任意長のデータを、固定長のデータに対応づける関数。
MD5、SHA-1、SHA-2といった実装があります。

 

HashMapの書き方

HashMapはジェネリクス型のため、キーと値の型を決めて宣言します。

キーと対応する値を入れるにはputメソッドを使い、キーに対応する値を取り出すにはgetメソッドを使います。

また、あるキーが含まれているか調べるにはcontainsKeyメソッドを使います。

その他メソッドは公式リファレンスを参照してください。

 

田島悠介

ハッシュに関する概要だね。

大石ゆかり

キーと値が、ひとつの組み合わせになるんですね。

田島悠介

次は実際にHashMapを使った例を見てみよう。

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

サンプルコードとして、単語の出現回数を調べるプログラムを書いています。実際にHashMapの使い方がイメージできるはずです。

ソースコード

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

public class HashMapDemo {
  public static void main(String[] args) {
    Map wordCounter = new HashMap();
    String[] words = { "bravo", "alpha", "charlie", "bravo" };
    for (String word : words) {
      int count = 0;
      if(wordCounter.containsKey(word)) {
        count = wordCounter.get(word);
      }
      wordCounter.put(word, count + 1);
    }
    wordCounter.forEach((word, count) -> {
      System.out.println("単語 " + word + " は " + count + " 回、出現しました。");
    });
  }
}

単語(文字列)と出現回数(整数)を対応づけるため、キーの型をString、値の型をIntegerとします。

ある単語wordに対し、containsKeyメソッドで既出か調べます。既出であれば、getメソッドで、これまでの出現回数を取得します。

出現回数に1を足し、putメソッドで出現回数を再登録します。

全ての単語を数え終わったら、forEachメソッドでキーと値を取り出し、表示します。

 

実行結果

単語 bravo は 2 回、出現しました。
単語 alpha は 1 回、出現しました。
単語 charlie は 1 回、出現しました。

 

 

まとめ

HashMapを用いることで、キーに対応する値を高速に取り出せます。

住所録データベース(氏名と住所を対応づけ)を作成したり、辞書を作成したりするのに便利です。

入門向けJavaの学習サイトもまとめているので、合わせてご覧ください。

 

田島悠介

ここではキーを文字列、値を整数としているよ。

大石ゆかり

containsKeyを使って、それぞれの文字列の出現回数を値としたわけですね。

田島悠介

HashMapを使うことでキーに対応した値を取り出せるようになるんだ。工夫して使ってみよう。

大石ゆかり

分かりました。ありがとうございます!

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

この記事を監修してくれた方

橋本紘希
システムインテグレータ企業勤務のシステムエンジニア

開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。