Javaに限らずプログラミングで最も大切になるのは配列の処理でしょう。
Javaですと、PHPのような連想配列の代わりにMapを使用します。
Mapとは?
ようはkey=>valueの組み合わせですね。PHPだと連想配列として普通に定義できるのですが、多くのプログラミング言語では配列と連想配列をしっかりと区別しており、連想配列というものは存在しません。代わりのオブジェクトを定義します。
Javaの場合ほとんどHashMapを使いますが、入力された値が順番通りに出てくるという利点があることからTreeMapを使うこともあります。この講座では基本的にHashMapを前提にして説明します。
Mapのインスタンス生成
1 2 3 |
Map<K,V> コンストラクタ = new HashMap<>(); 例としてMap<String,String> map = new HashMap<>(); |
などです。
値の保存
値を保存するにはputを使います。
1 2 3 |
map.put("001","松本"); map.put("002","田中"); |
値の取り出し
キーをもとにしてgetで値を取り出すことができます。
1 2 3 4 5 6 7 8 |
public static void main(String[] args) { Map<String,String> map = new HashMap<>(); map.put("001","松本"); map.put("002","田中"); String name = map.get("001"); System.out.print(name); //松本 } |
展開
配列の操作をするうえで必ずでてくる格納しているデータをすべて取り出す方法です。
マップはkey->valueの組み合わせをEntryというオブジェクトで定義していることから下記のようなループを使うと便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public static void main(String[] args) { Map<String,String> sampleMap = new HashMap<>(); sampleMap.put("001","松本"); sampleMap.put("002","田中"); for(Map.Entry<String,String> entry:sampleMap.entrySet()){ System.out.println("key " + entry.getKey() + " : value " + entry.getValue() ); } // 画面での表示 // key 001 : value 松本 // key 002 : value 田中 } |
Listとの組み合わせ
実際の処理で多いのはMapをListに入れた時の処理でしょう。
id | name | mail
01 | matsumoto | aaa@gmail.com
02 | tanaka | bbb@gmail.com
上記のような形式のデータのループは下記のようにして行います。
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 |
public static void main(String[] args) { List<Map<String,String>> ls; ls = new ArrayList<>(); Map<String,String> sampleMap1 = new HashMap<>(); sampleMap1.put("id","01"); sampleMap1.put("name","matsumoto"); sampleMap1.put("email","aaa@gmail.com"); ls.add(sampleMap1); Map<String,String> sampleMap2 = new HashMap<>(); sampleMap2.put("id","02"); sampleMap2.put("name","tanaka"); sampleMap2.put("email","bbb@gmail.com"); ls.add(sampleMap2); for(Map<String,String> sampleMap: ls){ for(Map.Entry<String,String> entry:sampleMap.entrySet()){ System.out.println("key " + entry.getKey() + " : value " + entry.getValue() ); } } //mapは入れた順番が下記のようにバラバラになることもあります。 //key name : value matsumoto //key id : value 01 //key email : value aaa@gmail.com //key name : value tanaka //key id : value 02 //key email : value bbb@gmail.com } |
配列ループ系は一番出てくる処理なので反射的にかけるレベルにしておきたいですね。