Map

Mapインターフェイスとは

Mapは、キー(key)と値(value)で構成されたインターフェイスです。実際のデータ処理はHashMapクラスを利用します。

項目 インターフェイス クラス 特徴
マップ Map HashMap keyとvalueがペアになった構造

Mapの変数定義

Collectionとの違いは、Mapではキーを任意で設定します。データ構造をどうするかによってCollectionMapを使い分けましょう。 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クラスを作成します。

プロパティとコンストラクタ設定

namepriceプロパティを設定し、コンストラクタで設定します。

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のキーを繰り返し表示してみましょう。