icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

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

 

田島悠介

今回は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を使うことでキーに対応した値を取り出せるようになるんだ。工夫して使ってみよう。

大石ゆかり

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

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

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

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

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する