セーブポイントが見つからない

ApexのMap(対応付け)の使い方

こんにちは、にいるです

今回はApexのコレクション、「Map(対応付け)」の使い方について、見ていきたいと思います

【ヘルプ】対応付け
【ヘルプ】Mapクラス

1.Mapとは

Mapとはキーと値の対応付けをして格納できるコレクションです
例えば、「1」というキーに対して、「Apple」を関連付けておいて「1」と呼べば、「Apple」を参照できるというイメージになります

2.Mapの使い方

Mapの宣言方法です
これもListやSetと同じくデータ型をで囲んで宣言します
ただ、Mapはキーと値を2つ入れるので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()の場合は、このように代入するデータ型に合わせてキーと値を代入します

デバッグすると新しくcとdが加わっています

続いて、get()です
String型の変数、strに4を入れてみます
コードは下記です

デバッグすると、ちゃんと4が入っているのを確認できました、問題ないですね!


 
最後はvalues()です
これはキーを無くして値だけをListにいれるメソッドです
MyStringsの値だけをListに代入したいと思います

デバックすると、strListには値の「1,2,3,4」だけが入っていることが確認できます

※setに値を入れる場合は、keySet()を使用すれば可能です
 

4.まとめ

いかがでしたでしょうか

ListとMapとそれぞれ見てきましたが、Mapが個人的には理解し難かったです
ただ、キーと値の対応付けなんでデバッグ張ってちゃんと中身を確認していくことが重要だと思います

ぜひ、皆さんもMapを使ってみてください

他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください

ではでは!