実際に書いてみる!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を使った例を見てみよう。
実際に書いてみよう
サンプルコードとして、単語の出現回数を調べるプログラムを書いています。実際に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アプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。 |