4. Map
ユーティリティ 4章 Map
4.1. java.util.Map, java.util.HashMap
「java.util.Map」はキーに対して値を保存するコレクションです。キーに対して保持できる値は1つです。その代表的なクラスである「java.util.HashMap」は「Map」インタフェースを実装したクラスで、「Hashtable」の代わりとして導入されたクラスです。値を設定するメソッド「put」、値を取得するメソッド「get」など、使用法は「Hashtable」と同じです。「Hashtable」も現在は「Map」インタフェースを実装しています。
Object get(Object) | 引数で指定されたオブジェクトに対してマッピングされている値を返します。 |
Object put(Object, Object) | 第1引数をキーとして、第2引数のオブジェクトをマッピングします。既に値がある場合には置き換えられます。 |
Object remove(Object) | 引数で指定されたオブジェクトに対して、マッピングされた値がある場合に削除します。返り値は削除された値です。 |
void clear() | 保存されている値をキーも含めて削除します。 |
boolean containsKey(Object) | 引数で指定されたオブジェクトがキーとして存在する場合に「true」を返します。 |
boolean containsValue(Object) | 引数で指定されたオブジェクトが値として保存されている場合に「true」を返します。 |
Set entrySet() | キーと値の組の一覧をSetで返します。 |
Set keySet() | キーの一覧をSetで返します。 |
Collection values() | 値の一覧をCollectionで返します。 |
boolean isEmpty() | 保存されている値が無い場合に「true」を返します。 |
int size() | 保存されている値の個数を返します。 |
Map map = new HashMap(); map.put("japan","日本"); map.put("china","中国"); String name = (String)map.get("china");
「Hashtable」ではキー/値一覧を「Enumeration」インタフェースで取り出すことができました。「HashMap」では、キーまたは値の一覧を「Iterator」インタフェースで取り出すことができます。ただし直接取り出すことはできないので、以下のようにします。
Iterator keyIterator = map.keySet().iterator(); Iterator valueIterator = map.values().iterator();
「keySet」メソッドが返す値は「Set」インタフェースで、これを介して「Iterator」インタフェースを取得します。
「values」メソッドが返す値は「Collection」インタフェースで、これは全てのコレクションクラスが実装している大元のインタフェースです。「Map」「Set」「List」は、全て「Collection」インタフェースを継承したインタフェースです。
他にキーと値の組の一覧を返す「entrySet」メソッドを、「Map」インタフェースは持っています。「entrySet」メソッドの返り値は「Set」インタフェースですが、値は「Map.Entry」インスタンスの形で保持されています。「Map.Entry」が提供する主なメソッドは以下の通りで、これらを用いてキーと値にアクセスする事ができます。
Object getKey() | キーの値を返す。 |
Object getValue() | キーに対して保存されている値を返す。 |
Object setValue(Object) | キーに対して保存されている値を、引数で指定された値に変更する。 |
(実習課題1)
以下のコンソールプログラムを実装しなさい。
- 3章の実習課題2で作成した人間クラスをキーとし、その住所を値として「HashMap」に複数保存する事。
- 最後にキーと値の一覧を表示する事。「entrySet()」メソッドを使用すること。