この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

対応付け

対応付けは、単一の値に一意のキーを対応付ける、キー - 値のペアのコレクションです。キーと値には、プリミティブ型、コレクション型、sObject 型、ユーザ定義型、組み込み Apex 型のいずれかのデータ型を使用できます。

次の表に、国名と通貨の対応付けを示します。

国 (キー) 'United States' 'Japan' 'France' 'England' 'India'
通貨 (値) 'Dollar' 'Yen' 'Euro' 'Pound' 'Rupee'

対応付けのキーと値にはどのコレクションでも含めることができ、コレクションをネストすることが可能です。たとえば、各種の対応付けに Integer を対応付けることができ、その対応付けによって String がリストに対応付けられます。対応付けのキー内では、コレクションを最大 7 レベルまでネストできます。つまり、最大で 8 つのレベルを使用できます。

対応付けを宣言するには、<> 文字で囲まれたキーおよび値のデータ型の前に Map キーワードを使用します。次に例を示します。

1Map<String, String> country_currencies = new Map<String, String>();
2Map<ID, Set<String>> m = new Map<ID, Set<String>>();

汎用または特定の sObject データ型を対応付けと共に使用できます。対応付けの汎用イン��タンスを作成することもできます。

リスト同様、中括弧 ({}) 構文を使用して対応付けを宣言する場合、対応付けのキー - 値のペアを入力できます。中括弧の中で、キーを最初に指定し、=> を使用してそのキーの値を指定します。次に例を示します。

1Map<String, String> MyStrings = new Map<String, String>{'a' => 'b', 'c' => 'd'.toUpperCase()};

最初の例で、キー a の値は b、キー c の値は D です。

対応付けの要素にアクセスするには、Apex が提供する Map メソッドを使用します。この例では、整数のキーと文字列の値の対応付けを作成します。2 つのエントリを追加し、最初のキーが存在することを確認して、2 番目のエントリの値を取得し、最後にすべてのキーセットを取得します。

1Map<Integer, String> m = new Map<Integer, String>(); // Define a new map
2m.put(1, 'First entry');                  // Insert a new key-value pair in the map
3m.put(2, 'Second entry');                  // Insert a new key-value pair in the map
4System.assert(m.containsKey(1));  // Assert that the map contains a key
5String value = m.get(2);               // Retrieve a value, given a particular key
6System.assertEquals('Second entry', value);
7Set<Integer> s = m.keySet();       // Return a set that contains all of the keys in the map

サポートされるすべての Map メソッドの全リストなどの詳細は、「Map クラス」を参照してください。

対応付けの考慮事項

  • Java と異なり、Apex 開発者は、宣言に対応付けを実装するために使用するアルゴリズム (HashMap または TreeMap など) を参照する必要がありません。Apex は、すべての対応付けにハッシュ構造を使用します。
  • 対応付け要素の反復順序は確定的です。順序は、同じコードの後続のどの実行でも同じです。ただし、対応付け要素には常にキーでアクセスすることをお勧めします。
  • 対応付けのキーは、null 値を保持できます。
  • 対応付けの既存のキーと一致するキーを含む対応付けエントリを追加すると、そのキーを含む既存のエントリが新しいエントリで上書きされます。
  • String 型の対応付けキーでは、大文字と小文字が区別されます。大文字と小文字のみが異なる 2 つのキーは一意であるとみなされ、それぞれに別個の対応付けエントリがあります。したがって、putgetcontainsKey、および remove などの Map メソッドでは、これらのキーが別個のものとして処理されます。
  • 対応付けのユーザ定義型キーの一意性は、クラスで提供する equals メソッドと hashCode メソッドによって判断されます。sObject キーなど、その他のすべての非プリミティブ型のキーの一意性は、オブジェクト項目の値の比較によって判断されます。
  • Map オブジェクトは、キーとして次のいずれかのデータ型を使用する場合にのみ、JSON にシリアライズできます。