【Java】HashMapの使い方を解説(連想配列)





こんにちは、新米ブログの新米です。

今回はHashMapの使い方についてサンプルコードを題材にして、紹介したいと思います。

HashMapを覚えよう!

■HashMap(連想配列)とは

・データ構造の1つ。
・キーでデータを扱うものです。

HashMapは配列とよく並んで使われます。HashMapは配列の機能と似ており、キーでデータを扱う事が特徴です。またHashMapは連想配列とも言われます。

先ほど話した通りHashMapは配列と機能が似ていますが、ではどこが違うのでしょうか?詳しくHashMapについて見ていきましょう!

配列とHashMap(連想配列)の違い

配列

配列はデータ構造の一種でデータをまとめて管理します。配列は添え字(インデックス)という番号を指定する事でデータを取り出す事ができます。

1つの変数で同じ型の複数のデータをまとめて扱えます。

HashMap(連想配列)

配列と同じでHashMapもデータをまとめて管理をします。しかし、HashMapでは添え字を使わないでデータを取り出すときはキーを使います。

配列は添え字(インデックス)ですが、HashMapはキーを使用します。もう少し具体的な機能を見てみましょう。
HashMapの具体的機能

例えば「brother」というHashMapを作成したとしましょう。この中に値を3つ用意しました。その場合、それぞれのキーでデータを参照したり変更したりできます。またこのキーは変数を使う事もできます。さらにデータの個数を簡単に確認する事もできます。それから、データの追加更新も簡単に行え削除も簡単に行えます。

■HashMapの具体的機能

・キーでデータ参照
・データ個数の確認
・データの追加・更新・削除

このように、まとまったデータを簡単に扱う事ができますね!では、HashMapの具体的な使い道はどのような時でしょうか?

HashMapはどのような時に使う?

学生

国語

数学

英語

一郎

90

50

80

次郎

80

55

70

三郎

25

35

100

HashMapの使い道は複数の項目があってそれをレコード別で使いたい場合などに使われます。
例えば、DB内に国語という項目名しかない場合は配列が適していますが、そこに数学、英語というように複数の科目があって、学生ごとにコードを取得したい場合はHashMapが適しています。



Hash Mapの書き方

■HasMapの宣言

HashMap<キーのデータ型,データのデータ型 > 変数 = new HashMap<キーのデータ型,データのデータ型 >();

キーまたはデータが整数値の場合はintではなく「Integer」なので注意!

■HashMapエントリー宣言

変数.put(“キー”,”データ”);

put()メソッドを使ってキーとデータの初期設定を行います。
データを取り出すためのキーとそれに対応するデータの事をエントリーと言います。

[サンプルコード]
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, String> brotherMap = new HashMap<String, String>();
   
       //格納
         brotherMap.put(“長男”, “一郎”);
         brotherMap.put(“次男”, “次郎”);
         brotherMap.put(“三男”, “三郎”);

	 //キーのデータを出力
         System.out.println(enemyMap.get(“次男”));
    }
}

[実行結果] 次郎

指定したキーが存在しない場合

HashMapで設定したキーではない物を出力しようとした場合どうなるか見てみましょう。

[サンプルコード]
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, String> brotherMap = new HashMap<String, String>();
   
       //格納
         brotherMap.put(“長男”, “一郎”);
         brotherMap.put(“次男”, “次郎”);
         brotherMap.put(“三男”, “三郎”);

         String sister = “長女”;
         System.out.println(brotherMap.get(sister));

	 //brotherMapの要素数を出力
	 System.out.println(brotherMap.size());
    }
}
[実行結果] null

長女というキーはありませんので実行結果はnullが返ります。また、size()メソッドは、要素数を知る事ができます。

キーを指定し要素を削除する方法

■要素を削除するためにはremove()メソッドを使用します。

変数名.remove(“キー”);
[サンプルコード]
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, String> brotherMap = new HashMap<String, String>();
   
         brotherMap.put(“長男”, “一郎”);
         brotherMap.put(“次男”, “次郎”);
         brotherMap.put(“三男”, “三郎”);

        //次郎を削除
	brotherMap.remove(“次男”);

	System.out.println(brotherMap.size());
  
    }
}
[実行結果] 2

remove()メソッドで要素を削除したことにより、要素数が2になった事がわかります。

HashMapとループ処理

■HashMapでループ処理Entryを使用します。

for(Entry<キーのデータ型, データのデータ型> 変数 : HashMap名.変数Set()){ }

■キーを取得します。

getKey() メソッド

■データを取得します。

getValue() メソッド
[サンプルコード]
// HasuMapをループで処理
import java.util.HashMap;
import java.util.Map.Entry;

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

         brotherMap.put(“長男”, “一郎”);
         brotherMap.put(“次男”, “次郎”);
         brotherMap.put(“三男”, “三郎”);

        for(Entry<String, String> entry : brotherMap.entrySet()){
	    //キーを取得
            System.out.print(entry.getKey() + ", ");
    
	   //データを取得
            System.out.println(entry.getValue());
        }
    }
}

[実行結果] 長男,一郎
次男,次郎
三男,三郎

このようにEntryをfor文に書くことによってHashMapのキー・データ、全てを取得する事もできます。

まとめ

いかがだったでしょうか。

連想配列と配列の区別をつけてそれぞれ適した場面で使う事を心がけていきましょう。
僕は現在新入社員として、IT企業で働いています。まだまだプログラミング知識は乏しいですが日々勉強に励んでいます。社内でプログラミングのできる方は参考書やWebサイトで学習した内容を実際にコードを書いてみることの繰り返しをしています。
僕も学んだことを実際に書いてみたり、こうしてブログ記事を書いて再復習しています。お互い上を目指して頑張りましょう!

\記事の更新時にはツイッターでツイートしますのでよければフォローお願いします!/

https://twitter.com/ShinMaiBlog/



コメント

  1. […] […]

タイトルとURLをコピーしました