Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

JavaのDictionaryとは

この記事では、JavaのDictionaryクラスについて解説します。

Dictionaryクラスとは、Hashtableの抽象基本クラスのことです。

キーを指定することで、関連する要素を参照できます。

ただし、Dictionaryクラスは現在使われておらず、代わりに「HashMap」を使います。

Mapとは

ではまず、Mapとは何かについて見ていきましょう。

JavaのMapインターフェースでは、連想配列が扱えます。

Mapインターフェースは、キーを値にマッピングするオブジェクトです。

もう少し噛み砕いて説明すると、値1つひとつに「キー(名前)」を設定し、値を設定したり取り出したりできます。

Mapインターフェースを実装しているクラスに、以下のようなものが挙げられます。

Mapインターフェースを実装している3つのクラス
  • HashMapクラス:キーからハッシュ値を算出して管理し、順序は保証されません
  • TreeMapクラス:キーによってソートし、順序が保証されます
  • LinkedHashMapクラス:挿入された順番で保持します、設定によってアクセス順で要素を保持することも可能です

ここでは、よく使われる HashMapクラス で説明していきます。

HashMapの使い方

では、HashMapの使い方を見ていきましょう。

使い方の流れは次の通りです。

  1. HashMapを宣言
  2. 値を「put」で追加
  3. 値を「get」で取得

順番に説明します!

①HashMapを宣言

HashMapを使うには、インスタンスを生成して初期化します。

HashMapクラスを宣言するには、次のように記述しましょう。

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

また、HashMapを使うために、Javaファイルの冒頭で import を行います。

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

宣言はこれだけでOKです!

②値を「put」で追加

HashMapに値を追加するには「putメソッド」を使います。

第1引数にキー(名前)を、第2引数にキーに関連づける値を記述しましょう。

例えば、次のように記述できます。

■記述例
Map<String, String> color = new HashMap<>();

color.put("red", "赤");
color.put("blue", "青");
color.put("yellow", "黄");

もしくは、ブロックを使用して、以下のように記述も可能です。

■記述例
Map<String, String> color = new HashMap<String, String>() {
	{
		put("red", "赤");
		put("blue", "青");
		put("yellow", "黄");
	}
};

上記の記述で値を追加する場合は、ダイヤモンド演算子(<>)が使えません。

そのため、型の引数(<String, String>)は省略できないので注意しましょう。

③値を「get」で取得

では、HashMapで追加した値を取得してみましょう。

値を取得する際には「getメソッド」を使います。

putと合わせて、getで値を取得するプログラムの記述例は、次の通りです。

■記述例
import java.util.Map;
import java.util.HashMap;

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

    color.put("red", "赤");
    color.put("blue", "青");
    color.put("yellow", "黄");

    System.out.println(color.get("red"));
    System.out.println(color.get("blue"));
    System.out.println(color.get("yellow"));
  }
}
■実行結果
mbp:Desktop potepan$ java Main
赤
青
黄

それぞれ、指定したキーに関連づいた値が取得できていますね!

なお、キー・値を設定していないものを取得しようとすると「NULL」が返ります。

■記述例
System.out.println(color.get("red"));
System.out.println(color.get("blue"));
System.out.println(color.get("yellow"));
System.out.println(color.get("green")); // 追加していない値

■実行結果
mbp:Desktop potepan$ java Main
赤
青
黄
null

また、キーがマッピングされている状態で値を上書きすると、関連づけも上書きされます。

■記述例
import java.util.Map;
import java.util.HashMap;

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

    color.put("red", "赤");
    color.put("blue", "青");
    color.put("yellow", "黄");
    color.put("red", "レッド");

    System.out.println(color.get("red"));
    System.out.println(color.get("blue"));
    System.out.println(color.get("yellow"));
  }
}

■実行結果
mbp:Desktop potepan$ java Main
レッド
青
黄

HashMapで使えるメソッド

HashMapでは、先述した putメソッド getメソッド 以外にも、さまざまなメソッだが使えます。

一覧にすると、次の通りです。

メソッド 詳細
Map.put(key, value) マップに値を追加
Map.get(key) マップの値を取得
Map.remove(key) マップの値を削除
Map.clear() マップの値を全削除
Map.containsKey(key) 指定したキーが存在する場合はtrue、存在しない場合はfalseを返す
Map.size() マップの長さを取得
Map.entrySet() キーと値をセットで取得
Map.keySet() キーだけを取得
Map.values() 値だけを取得

ここでは、いくつかのメソッドを実際に使い、動作を確認してみます!

■記述例
import java.util.Map;
import java.util.HashMap;

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

    color.put("red", "赤");
    color.put("blue", "青");
    color.put("yellow", "黄");
    color.put("green", "緑");
    color.put("pink", "ピンク");

    System.out.println("すべての値を表示します");
    System.out.println(color.get("red"));
    System.out.println(color.get("blue"));
    System.out.println(color.get("yellow"));
    System.out.println(color.get("green"));
    System.out.println(color.get("pink"));
    System.out.println();

    System.out.println("マップの長さを表示します");
    System.out.println(color.size());
    System.out.println();

    // pinkを削除
    color.remove("pink");
    System.out.println("pinkを削除後に、すべての値を表示します");
    System.out.println(color.get("red"));
    System.out.println(color.get("blue"));
    System.out.println(color.get("yellow"));
    System.out.println(color.get("green"));
    System.out.println(color.get("pink"));
    System.out.println();

    System.out.println("red が存在するかチェックします");
    System.out.println(color.containsKey("red"));
    System.out.println();

    System.out.println("すべてのキー・値を取得します");
    // entrySetメソッドで、すべてのキー・値を取得します
    for (Map.Entry<String, String> entrySet : color.entrySet()) {
			System.out.println(entrySet.getKey() + " = " + entrySet.getValue());
		}
    System.out.println();

    // 全削除
    color.clear();
    System.out.println("すべてのキー・値を削除します");
    System.out.println(color.get("red"));
    System.out.println(color.get("blue"));
    System.out.println(color.get("yellow"));
    System.out.println(color.get("green"));
    System.out.println(color.get("pink"));
  }
}
■実行結果
mbp:Desktop potepan$ java Main
すべての値を表示します
赤
青
黄
緑
ピンク

マップの長さを表示します
5

pinkを削除後に、すべての値を表示します
赤
青
黄
緑
null

red が存在するかチェックします
true

すべてのキー・値を取得します
red = 赤
green = 緑
blue = 青
yellow = 黄

すべてのキー・値を削除します
null
null
null
null
null

それぞれ、意図した動作になっているのがわかるはずです。

特に、entrySetメソッドは、すべてのキー・値を一括で取得できるので便利です。

ぜひここで、使い方を覚えていってください!

まとめ

JavaのDictionaryは、Hashtableの抽象基本クラスですが、現在は使用されていません。

実装する際は、Dictionaryクラスではなく「Mapインタフェース」を実装しましょう。

使い方は、この記事でイチから解説させていただきました!

ぜひ参考に、使いこなせるようになってください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。