こんにちは、にいるです
今回はApexのコレクション、「Map(対応付け)」の使い方について、見ていきたいと思います
1.Mapとは
Mapとはキーと値の対応付けをして格納できるコレクションです
例えば、「1」というキーに対して、「Apple」を関連付けておいて「1」と呼べば、「Apple」を参照できるというイメージになります
2.Mapの使い方
Mapの宣言方法です
これもListやSetと同じくデータ型をで囲んで宣言します
ただ、Mapはキーと値を2つ入れるので2つのデータ型をカンマで区切って宣言する必要があります
| 1 2 3 |         // Mapの変数宣言方法         Map<String,String> accMap1 = new Map<String,String>();         System.debug('●accMap1● = ' + accMap1.size()); | 
初期値の代入はこんな感じです
ちょっと変わった形になっていて、キーと値を「=>」で関連付けています
| 1 2 |         // 宣言時の代入方法         Map<String, String> MyStrings = new Map<String, String>{'a' => '1', 'b' => '2'};  | 
Mapの中を見てみると、キーと値は=で関連付けられていることがわかります
 
最初は見慣れないですが、実務で使っていくと自然に慣れていくと思います
3.Mapのメソッド
| # | メソッド | 内容 | 
| 1 | clear() | 対応付けからすべてのキーと値の対応付けを削除します | 
| 2 | clone() | 対応付けの重複コピーを作成します | 
| 3 | containsKey(key) | 指定されたキーの対応付けが含まれている場合はtrueを返します | 
| 4 | deepClone() | sObjectレコード値との対応付けの場合、sObjectレコードを含む、対応付けの重複コピーを作成します | 
| 5 | equals(map2) | 指定した対応付けと比較し、両方の対応付けが等しい場合はtrueを返します | 
| 6 | get(key) | 指定したキーが対応付けられている値または、このキーの対応付けに値が含まれていない場合はnullを返します | 
| 7 | getSObjectType() | Map値を構成するsObjectデータ型のトークンを返します | 
| 8 | hashCode() | この対応付けに対応するhashcodeを返します | 
| 9 | isEmpty() | 対応付けのキーと値のペアが0の場合、trueを返します | 
| 10 | keySet() | 対応付けのすべてのキーを含むセットを返します | 
| 11 | put(key,value) | 指定された値を対応付けの指定したキーに関連付けます | 
| 12 | putAll(fromMap) | 指定先の対応付けからすべての対応付けを、元の対応付けにコピーします | 
| 13 | putAll(sobjectArray) | sObjectレコードのリストを、Map、またはMapとして宣言されている対応付けに追加します | 
| 14 | remove(key) | 指定されたキーの対応付けを対応付けから削除し、対応する値がある場合は、その値を返します | 
| 15 | size() | 対応付けのキー-値のペアの数を返します | 
| 16 | toString() | 地図の文字列表現を返します | 
| 17 | values() | 対応付けのすべての値を含むリストを返します | 
Mapで必ず使うものは、put()やget()、values()ですね
put()の場合は、このように代入するデータ型に合わせてキーと値を代入します
| 1 2 3 4 5 |         // Mapのputの使い方         Map<String, String> MyStrings = new Map<String, String>{'a' => '1', 'b' => '2'};          MyStrings.put('c','3');         MyStrings.put('d','4');         System.debug('●MyStrings● = ' + MyStrings()); | 
デバッグすると新しくcとdが加わっています
続いて、get()です
String型の変数、strに4を入れてみます
コードは下記です
| 1 2 3 4 5 6 7 |         // Mapのgetの使い方         Map<String, String> MyStrings = new Map<String, String>{'a' => '1', 'b' => '2'};          MyStrings.put('c','3');         MyStrings.put('d','4');         System.debug('●MyStrings● = ' + MyStrings); 	String str = MyStrings.get('d'); 	System.debug('●str● = '+ str); | 
デバッグすると、ちゃんと4が入っているのを確認できました、問題ないですね!
 
最後はvalues()です
これはキーを無くして値だけをListにいれるメソッドです
MyStringsの値だけをListに代入したいと思います
| 1 2 3 4 5 6 7 |         // Mapのvaluesの使い方         Map<String, String> MyStrings = new Map<String, String>{'a' => '1', 'b' => '2'};          MyStrings.put('c','3');         MyStrings.put('d','4');         System.debug('●MyStrings● = ' + MyStrings); 	List<String> strList = MyStrings.values(); 	System.debug('●strList● = '+ strList); | 
デバックすると、strListには値の「1,2,3,4」だけが入っていることが確認できます
※setに値を入れる場合は、keySet()を使用すれば可能です
 
4.まとめ
いかがでしたでしょうか
ListとMapとそれぞれ見てきましたが、Mapが個人的には理解し難かったです
ただ、キーと値の対応付けなんでデバッグ張ってちゃんと中身を確認していくことが重要だと思います
ぜひ、皆さんもMapを使ってみてください
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください
ではでは!