HashMapによるMapの利用
続いて「Map」を利用してみましょう。Mapの実装としては、「HashMap」というクラスを利用するのが一般的です。これは、キーと保管するオブジェクトをセットにして追加していきます。ただし、ArrayListのように並び順は保障されないので注意が必要です。
[HashMap].put( キー , オブジェクト );
Object 変数 = [HashMap].get( キー );
[HashMap].remove( キー );
int 変数 = [HashMap].size();
Mapは、特定のキーの値を使ってオブジェクトを保管していき、キーの値を指定してオブジェクトを取り出します。この性格を利用して簡易データベース的な使われ方をされることがあります。
package codezine.java; import java.util.*; public class Sample { public static void main(String[] args) { HashMap map = new HashMap(); map.put("yamada","taro@mail.co.jp"); map.put("hanako", "hanako@yamada.com"); map.put("tuyano", "tuyano@mac.com"); try { String key = args[0]; String value = (String)map.get(key); System.out.println(key + ": " + value); } catch(ArrayIndexOutOfBoundsException ex){ System.out.println("引数の値が取り出せませんでした。"); } } }
ここではHashMapにダミーの値をいくつか保管しておき、実行したときに渡された引数を使って特定の値を取り出し表示しています。例えば、
java codezine.java.Sample tuyano
このように実行すると、「tuyano: tuyano@mac.com」というように、入力した人のメールアドレスが表示されます。
mainの引数の正体
ここでは、mainメソッドの引数にあるString配列を使っています。「これ、一体、何のためにあるんだ?」と思っていた人もきっといたことでしょう。これは、Javaコマンドでプログラムを実行する際に書いてあった引数の値が渡されるのです。例えば、
java 実行クラス 値1 値2 値3
こんな具合に書いて実行したとすると、args[0]には「値1」が、args[1]には「値2」、args[2]には「値3」が収められるようになっているのです。プログラムを実行する際に、必要な値をプログラムに渡したいときに用いられます。ただし、引数に値が入っていないと、ArrayIndexOutOfBoundsExceptionという例外が発生してしまいますので、tryを使って例外処理をしたうえでargsの値を取り出すようにするとよいでしょう。
ここでは、引数を使って調べたい人間の名前を渡します。そして、map.get(key)で、その引数の値をキーに指定して値を取り出します。このとき注意すべきは「取り出した値のキャスト」です。HashMapも、やっぱり値はObjectにキャストされて取り出されるので、取り出したものを(String)としてテキストにキャストしておく必要があります。
HashMapでは、キーの値を完全に指定してやらないといけません。例えば、"tuyano"というキーの値は、"tuya"などでは取り出せないのです。ですから、本格的なデータベースとして使えるわけではありません。

