22.
Map
Map
Mapインターフェイスとは
Mapは、キー(key)と値(value)で構成されたインターフェイスです。実際のデータ処理はHashMapクラスを利用します。
項目 | インターフェイス | クラス | 特徴 |
---|---|---|---|
マップ | Map | HashMap | keyとvalueがペアになった構造 |
Mapの変数定義
Collectionとの違いは、Mapではキーを任意で設定します。データ構造をどうするかによってCollectionとMapを使い分けましょう。 Mapの変数は、キーと値のデータ型を定義します。
Map<キーのデータ型, 値のデータ型> 変数名;
変数定義
キーがInteger型、値がString型のMapを定義します。
Map<Integer, String> map;
HashMapの利用
HashMapインスタンス生成
HashMapインスタンス生成して初期化します。
Map<Integer, String> nameMap = new HashMap<>();
また、HashMapとして定義もできます。
HashMap<Integer, String> nameMap = new HashMap<>();
データ追加
put() はキーと値を指定して、データ追加します。
Map.put(key, value);
Mapの利用
ファイル構成
./
└── cafe/
├── MapApp.java
└── Drink.java
Drinkクラス作成
cafeパッケージにDrinkクラスを作成します。
プロパティとコンストラクタ設定
name、priceプロパティを設定し、コンストラクタで設定します。
cafe.Drink.java
package cafe;
public class Drink {
public String name;
public Integer price;
public Drink(String name, Integer price) {
super();
this.name = name;
this.price = price;
}
}
App作成
cafeパッケージにメインアプリAppクラスを作成します。
cafe.MapApp.java
package cafe;
public class App {
public static void main(String[] args) {
}
}
HashMap作成
メインメソッドでHashMapを初期化します。
cafe.MapApp.java
public static void main(String[] args) {
HashMap<String, Drink> drinkMap = new HashMap<>();
}
- key:String型
- value:Drink型
HashMapにデータ追加
HashMapインスタンスに、キーとDrinkインスタンスを追加します。
cafe.AppMap.java
public static void main(String[] args) {
HashMap<String, Drink> drinkMap = new HashMap<>();
drinkMap.put("D0001", new Drink("コーヒー", 350));
drinkMap.put("D0002", new Drink("紅茶", 400));
drinkMap.put("D0003", new Drink("ほうじ茶", 300));
}
Mapデータの操作
keySet()
keySet() はMapのキーをすべて取得するメソッドです。
Map.keySet();
データの表示
foreach文でキーを繰り返し表示してみましょう。
cafe.MapApp.java
public static void main(String[] args) {
HashMap<String, Drink> drinkMap = new HashMap<>();
drinkMap.put(1, new Drink("コーヒー", 350));
drinkMap.put(2, new Drink("紅茶", 400));
drinkMap.put(3, new Drink("ほうじ茶", 300));
for (String key :drinkMap.keySet()) {
System.out.println(key);
}
}
Mapのキーが順に表示されました。
結果
D0001
D0002
D0003
values()
values() はMapの値をすべて取得するメソッドです。
Map.values();
データの表示
foreach文で、値を繰り返し表示してみましょう。
cafe.MapApp.java
for (Drink drink :drinkMap.values()) {
System.out.println(drink.name);
}
Mapの値が順に表示されました。
結果
コーヒー
紅茶
ほうじ茶
get()
get() はMapのキーを指定してデータ取得するメソッドです。
Map.get(key);
変数からデータ取得
キーを指定してMapデータを取得し、Drinkインスタンスの価格を表示します。
cafe.MapApp.java
Drink selectDrink = drinkMap.get("D0001");
System.out.println(selectDdrink.name)
System.out.println(selectDdrink.price)
指定したキーの値が表示されました。
結果
コーヒー
350
size()
size() はMapのデータ数を取得するメソッドです。
Map.size();
cafe.MapApp.java
int count = drinkMap.size();
System.out.println(count);
データの個数が確認しました。
結果
3
remove()
remove() はMapデータをキーを指定して削除するメソッドです。
Map.remove(key);
キーを指定してデータを削除し、Mapデータを順に表示します。
cafe.MapApp.java
drinkMap.remove("D0001");
for (Drink drink :drinkMap.values()) {
System.out.println(drink.name);
}
指定したキーのMapデータが削除されました。
結果
紅茶
ほうじ茶
演習
問題1
以下のデータをMap型の変数foodMapを定義してみましょう。
key(String) | value(String) |
---|---|
F0001 | Apple |
F0002 | Peach |
F0003 | Grape |
問題2
foodMapからPeachを取得してみましょう。
問題3
foodMapの値を繰り返し表示してみましょう。
問題4
以下のデータをMap型変数cityMapを定義してみましょう。
key(Integer) | value(String) |
---|---|
13 | 東京 |
27 | 大阪 |
14 | 神奈川 |
問題5
cityMapのキーを繰り返し表示してみましょう。