この記事の目次
SalesforceのMapクラスとは?

- プリミティブ型
- コレクション型
- ユーザ定義型
- sObject型
- 組み込みApex型
よく利用するMapクラスの使い方

Mapクラスのインスタンスに要素を設定する方法
Mapクラスのインスタンスに値を設定する方法は、4種類あります。 SalesforceのMapクラスはJavaのMapクラスによく似ていますが、Salesforce特有のメソッドも提供されています。Mapクラスのインスタンスを新規作成し、キーを指定して値を設定する方法
Mapクラスのインスタンスを作成し、put()でキーを指定して値を設定します。Map<String, Integer> map1 = new Map<String, Integer>();
// put()を利用して、キーと値をセットで指定する
map1.put('りんご', 120);
map1.put('バナナ', 200);
他のオブジェクトの全要素を追加設定する方法
Mapクラスのインスタンスに、putAll()の引数に指定したオブジェクトの全要素を追加設定します。putAll()の引数に指定できるオブジェクトは、Mapクラスまたは、組織のSalesforceオブジェクトであるsObjectの配列のみです。 なお、Mapクラスのインスタンスに既に存在するキーの場合、putAll()の引数で指定されたオブジェクトの値に置き換えられます。また、sObjectの配列をputAll()の引数に指定した場合、キーにsObjectのIDが、そのキーの値にはsObjectが設定されます。 例)putAll()でMapクラスのインスタンスの全要素を追加設定した場合Map<String, String> map1 = new Map<String, String>();
map1.put('りんご','青森');
Map<String, String> map2 = new Map<String, String>();
map2.put('梨','山梨');
// map1の全要素がmap2に追加設定される
map2.putAll(map1);
System.debug(map2); // りんごと梨の情報が出力される
既に存在するMapクラスの要素を新しいインスタンスにすべて設定する方法
新しいMapクラスのインスタンスを作成したときに、コンストラクタに指定されたMapクラスの全要素を設定します。Map<String, Integer> map1 = new Map<String, Integer>();
map1.put('りんご', 120);
map1.put('バナナ', 200);
// Mapクラスのコンストラクタにmap1を設定すると、map1の全要素がmap2に設定される
Map<String, Integer> map2 = new Map<String, Integer>(map1);
// List同様に中括弧({})構文を使用し、インスタンスの作成と要素の設定を同時に行える
// 中括弧({})構文では、キーを設定し、「=>」を宣言した後にキーの値を指定する
Map<String, String> producingMap = new Map<String, String>{'りんご' => '青森', '梨' => '山梨'};
sObjectの配列をMapクラスのインスタンスに変換する方法
sObjectの配列からMapクラスに変換したインスタンスを作成します。Salesforce特有のMapクラスの使い方です。作成されたMapクラスのキーにsObjectのIDが、値にはsObjectが設定されます。// 取引先情報(sObject[])を取得する
List<Account> list = [select Id, Name, Phone from Account];
// 取引先情報(sObject[])がMapクラスに変換され、mapに代入される
Map<Id, Account> map = new Map<Id, Account>(list);
Mapクラスのインスタンスから値を取得する方法
get()の引数にキーを指定して、Mapクラスのインスタンスからキーの値を取得します。Map<String, String> map = new Map<String, String>();
map.put('りんご','青森');
map.put('バナナ','フィリピン');
// keySet()を利用し、mapのすべてのキーを配列で取得する
// 拡張for文にキーの配列を設定し、キーを1つずつ取り出す
for(String key: map.keySet()) {
// キーの値を取得する
System.debug(map.get(key));
}
Mapクラスのインスタンスから要素を削除する方法
SalesforceのMapクラスも、JavaのMapクラス同様にインスタンスから削除する要素の単位ごとに、メソッドが提供されています。削除する要素の単位ごとに削除する方法を解説します。キーを指定して、要素を削除する方法
remove()の引数にキーを指定して、Mapクラスのインスタンスから指定したキーの要素を削除します。Map<String, String> map1 = new Map<String, String>();
map1.put('りんご','青森');
map1.put('バナナ','フィリピン');
// キーが「りんご」の要素を削除される
map1.remove('りんご')
System.debug(map1); // バナナの情報だけが表示される
Mapクラスのインスタンスからすべての要素を削除する方法
clear()の引数にキーを指定して、Mapクラスのインスタンスからすべての要素を削除します。Map<String, String> map = new Map<String, String>();
map.put('りんご','青森');
map.put('バナナ','フィリピン');
// mapからすべての要素を削除される
map.clear()
Mapクラスのインスタンスにキーがあるか、チェックする方法
containsKey()の引数にキーを指定して、指定されたキーがMapクラスのインスタンスに含まれているか、チェックします。指定したキーがインスタンスに含まれている場合、「true」を返却します。Map<String, String> map = new Map<String, String>();
map.put('りんご','青森');
map.put('バナナ','フィリピン');
// mapのキーに「りんご」が含まれているか、チェックされる
System.assertEquals(true, map.containsKey('りんご'));
Mapクラスを使ってみよう

この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞