チュートリアル
Java で連想配列を扱う基本操作のサンプルをご紹介します。
連想配列とは、キーに対して値を結び付けて格納するイメージです。
サンプルコード:連想配列を扱う基本操作
連想配列を扱うにはHashMapクラスまたはHashTableクラスを使用します。
サンプルプログラムを例に説明していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import java.util.HashMap; import java.util.Set; public class HashListSample { public static void main(String[] args) { // 連想配列要素を初期化する HashMap<String, String> animalList = new HashMap<String, String>(); // 配列に値を追加 animalList.put("dog", "いぬ"); // いぬ animalList.put("horse", "うま"); // うま animalList.put("giraffe", "きりん");// きりん animalList.put("gorilla", "ごりら");// ごりら animalList.put("monkey", "さる"); // さる // 配列の要素数を出力 System.out.println("----- 配列の要素数を出力 -----"); System.out.println(animalList.size()); // うまの値を出力 System.out.println("----- リストからキーが「うま」の値を出力 -----"); System.out.println(animalList.get("horse")); // リストを出力 System.out.println("----- リストを出力 -----"); Set<String> keys = animalList.keySet(); for (String key : keys) { System.out.println(key + " => " + animalList.get(key)); } // ごりらの要素を削除 animalList.remove("gorilla"); // 削除後のリストを出力 System.out.println("----- 削除後のリストを出力 -----"); keys = animalList.keySet(); for (String key : keys) { System.out.println(key + " => " + animalList.get(key)); } } } |
実行結果
上記プログラムを実行し、出力された内容が下記となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
----- 配列の要素数を出力 ----- 5 ----- リストからキーが「うま」の値を出力 ----- うま ----- リストを出力 ----- horse => うま gorilla => ごりら monkey => さる giraffe => きりん dog => いぬ ----- 削除後のリストを出力 ----- horse => うま monkey => さる giraffe => きりん dog => いぬ |
連想配列を扱うポイント
連想配列とは?
連想配列とはキーに対して値を結び付けて格納するイメージです。
以下の図をイメージしていただくとわかりやすいでしょう。意味のあるキーと値が結び付いていることがわかるでしょう。
キー | 値 |
---|---|
キー1 | 値1 |
キー2 | 値2 |
キー3 | 値3 |
キー4 | 値4 |
キー5 | 値5 |
キーX | ・・・ |
配列を初期化する
配列を扱うにはHashMapクラスを使用し、使用するキーの属性、格納する値の属性を<>の中に記述します。
1 2 3 4 5 6 7 8 |
// 記述例:連想配列の定義 HashMap<キーの型, 値の型> 連想配列の変数名 = new HashMap<キーの型, 値の型>(); // 文字列キー、文字列の値を格納する連想配列を定義する場合 HashMap<String, String> strMap = new HashMap<String, String>(); // 文字列キー、数値の値を格納する配列を定義する場合 HashMap<String, Integer> intMap = new HashMap<String, Integer>(); |
配列に値を追加する
配列に値を追加するにはput関数を使用します。
1 2 3 4 5 6 7 8 9 |
// 記述例:連想配列に値を追加する場合 連想配列の変数名.put(追加するキー, 追加する値) // 連想配列に値(動物の英単語文字列をキーに日本語の値)を追加する場合 animalList.put("dog", "いぬ"); // いぬ animalList.put("horse", "うま"); // うま animalList.put("giraffe", "きりん"); // きりん animalList.put("gorilla", "ごりら"); // ごりら animalList.put("monkey", "さる"); // さる |
put関数を使用することで以下のように値が連想配列に格納されたイメージになります。
注意点は、キーは一意である必要があるという点です。
同じキーで指定した場合、古い値は新しい値に置き代わります。※JDKのバージョンにより例外が発生するので注意
キー | 格納値 |
---|---|
“dog” | “いぬ” |
“horse” | “うま” |
“giraffe” | “きりん” |
“gorilla” | “ごりら” |
“monkey” | “さる” |
連想配列から要素数を取得する
要素数とは、格納した連想配列にいくつの要素が存在するかということです。
要素数を取得する場合はsize関数を使用します。
1 2 3 4 5 |
// 記述例:連想配列の要素数を取得する場合 連想配列の変数名.size(); // 例:連想配列の要素数を取得する。 animalList.size(); |
連想配列から指定たキーの値を取得する
格納した連想配列から指定したキーの値を取得する場合はget関数を使用します。
get関数に、取得するキーを指定して取得します。
1 2 3 4 5 |
// 記述例:指定したキーの値を取得したい場合 連想配列の変数名.get(キー); // キー:horseの値を取得したい場合 animalList.get("horse"); |
連想配列からすべての要素を取り出す
格納した連想配列からすべての要素を取り出す場合はleySet関数を使用します。
keySet関数でキーのリストを取得し、get関数に取得するキーを指定して取得します。
※注意点は、格納した順番通り(putした順番通り)でキーリストが作成される保証はない点です。
(putした順番”dog”→”horse”→”giraffe”→”gorilla”→”monkey”でキーのリストが作成される保証はない。)
1 2 3 4 5 6 7 8 |
// 記述例:すべてのキーリストを取得する場合 Set<キーの型> キーリストの変数名 = 連想配列の変数名.keySet(); // 連想配列からキーリストを取得する Set<String> keys = animalList.keySet(); for (String key : keys) { System.out.println(key + " => " + animalList.get(key)); } |
連想配列の指定したキーの要素を削除する
連想配列の指定したキーの要素を削除する場合はremove関数を使用します。
remove関数に要素を削除するキーを指定します
1 2 3 4 5 |
// 記述例:連想配列の指定したキーの要素を削除する 連想配列の変数名.remove("キー") // 連想配列のキー:gorillaの要素を削除する animalList.remove("gorilla"); |
連想配列のキー:gorillaを削除した場合は下記ようなイメージとなります。
削除前
キー | 格納値 |
---|---|
“dog” | “いぬ” |
“horse” | “うま” |
“giraffe” | “きりん” |
“gorilla” | “ごりら” |
“monkey” | “さる” |
↓↓↓↓↓↓↓↓↓
削除後
キー | 格納値 |
---|---|
“dog” | “いぬ” |
“horse” | “うま” |
“giraffe” | “きりん” |
“monkey” | “さる” |