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

Newer Version Available

This content describes an older version of this product. View Latest

Map クラス

Map コレクション型のメソッドが含まれます。

名前空間

System

使用方法

Map メソッドはすべてインスタンスメソッドで、対応付けの特定のインスタンスで動作します。次に、Map のインスタンスメソッドを示します。

  • 対応付けのキーと値には、プリミティブ型、コレクション型、sObject 型、ユーザ定義型、組み込み Apex 型のいずれかのデータ型を使用できます。
  • 対応付けのユーザ定義型キーの一意性は、クラスで提供する equals メソッドと hashCode メソッドによって判断されます。sObject キーなど、その他のすべての非プリミティブ型のキーの一意性は、オブジェクト項目の値の比較によって判断されます。
  • String 型の対応付けキーでは、大文字と小文字が区別されます。大文字と小文字のみが異なる 2 つのキーは一意であるとみなされ、それぞれに別個の対応付けエントリがあります。したがって、putgetcontainsKey、および remove などの Map メソッドでは、これらのキーが別個のものとして処理されます。

メモ

Map についての詳細は、「対応付け」を参照してください。

Map コンストラクタ

Map のコンストラクタは次のとおりです。

Map<T1, T2>()

Map クラスの新しいインスタンスを作成します。T1 はキーのデータ型で、T2 は値のデータ型です。

署名

public Map<T1,T2>()

1Map<Integer, String> m1 = new Map<Integer, String>();
2m1.put(1, 'First item');
3m1.put(2, 'Second item');

Map<T1,T2>(mapToCopy)

Map クラスの新しいインスタンスを作成し、指定されたマップからエントリをコピーしてそのインスタンスを初期化します。T1 はキーのデータ型で、T2 は値のデータ型です。

署名

public Map<T1,T2>(Map<T1,T2> mapToCopy)

パラメータ

mapToCopy
型: Map<T1, T2>
この対応付けの初期化に使用する対応付け。T1 はキーのデータ型で、T2 は値のデータ型です。すべての対応付けのキーおよび値はこの対応付けにコピーされます。

1Map<Integer, String> m1 = new Map<Integer, String>();
2m1.put(1, 'First item');
3m1.put(2, 'Second item');
4Map<Integer, String> m2 = new Map<Integer, String>(m1);
5// The map elements of m2 are copied from m1
6System.debug(m2);

Map<ID,sObject>(recordList)

Map クラスの新しいインスタンスを作成し、そのインスタンスに渡された sObject レコードリストを入力します。キーには sObject ID が入力されます。その値は sObject です。

署名

public Map<ID,sObject>(List<sObject> recordList)

パラメータ

recordList
型: List<sObject>
対応付けに入力される sObject のリスト。

1List<Account> ls = [select Id,Name from Account];
2Map<Id, Account> m = new Map<Id, Account>(ls);

Map メソッド

Map のメソッドは次のとおりです。すべてインスタンスメソッドです。

clear()

対応付けからすべてのキーと値の対応付けを削除します。

署名

public Void clear()

戻り値

型: Void

clone()

対応付けの重複コピーを作成します。

署名

public Map<Object, Object> clone()

戻り値

型: Map (同じデータ型)

使用方法

これが sObject レコード値の対応付けである場合、重複対応付けは対応付けの浅いコピーとなります。つまり、重複には各 sObject レコードへの参照がありますが、レコード自体は重複しません。次に例を示します。

sObject レコードもコピーするには、deepClone メソッドを使用する必要があります。

1Account a = new Account(
2   Name='Acme', 
3   BillingCity='New York');
4
5Map<Integer, Account> map1 = new Map<Integer, Account> {};
6map1.put(1, a);
7
8Map<Integer, Account> map2 = map1.clone();
9map1.get(1).BillingCity = 
10'San Francisco';
11
12System.assertEquals(
13   'San Francisco',
14   map1.get(1).BillingCity);
15
16System.assertEquals(
17   'San Francisco',
18   map2.get(1).BillingCity);

containsKey(key)

指定されたキーの対応付けが含まれている場合は true を返します。

署名

public Boolean containsKey(Object key)

パラメータ

key
型: Object

戻り値

型: Boolean

使用方法

キーが String の場合、キーの値では大文字と小文字が区別されます。

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6Boolean contains = colorCodes.containsKey('Blue');
7System.assertEquals(true, contains);

deepClone()

sObject レコード値との対応付けの場合、sObject レコードを含む、対応付けの重複コピーを作成します。

署名

public Map<Object, Object> deepClone()

戻り値

型: Map (of the same type)

使用方法

含まれる sObject レコードが重複しないようにして、対応付けの浅いコピーを作成するには、clone() メソッドを使用します。

1Account a = new Account(
2   Name='Acme', 
3   BillingCity='New York');
4
5Map<Integer, Account> map1 = new Map<Integer, Account> {};
6
7map1.put(1, a);
8
9Map<Integer, Account> map2 = map1.deepClone();
10
11// Update the first entry of map1
12map1.get(1).BillingCity = 'San Francisco';
13// Verify that the BillingCity is updated in map1 but not in map2
14System.assertEquals('San Francisco', map1.get(1).BillingCity);
15System.assertEquals('New York', map2.get(1).BillingCity);

equals(map2)

この対応付けと指定された対応付けを比較し、両方の対応付けが等しい場合は true を返し、そうでない場合は false を返します。

署名

public Boolean equals(Map map2)

パラメータ

map2
型: Map
map2 引数は、この対応付けと比較する対応付けです。

戻り値

型: Boolean

使用方法

キー/値ペアが同一である場合は、それらの順序に関係なく、2 つの対応付けは等しくなります。== 演算子は、対応付けのキーおよび値を比較するために使用します。

== 演算子は、equals メソッドのコールに相当します。そのため、map1 == map2; ではなく map1.equals(map2); をコールできます。

get(key)

指定したキーが対応付けられている値または、このキーの対応付けに値が含まれていない場合は null を返します。

署名

public Object get(Object key)

パラメータ

key
型: Object

戻り値

型: Object

使用方法

キーが String の場合、キーの値では大文字と小文字が区別されます。

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6String code = colorCodes.get('Blue');
7
8System.assertEquals('0000A0', code);
9
10// The following is not a color in the map 
11String code2 = colorCodes.get('Magenta');
12System.assertEquals(null, code2);

getSObjectType()

Map 値を構成する sObject データ型のトークンを返します。

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType

使用方法

このメソッドを Describe Information と共に使用して、対応付けに特定のデータ型の sObject を含めるかどうかを指定します。

このメソッドは sObject 値を持つ対応付けでのみ使用できます。

詳細は、「Apex Describe Information について」を参照してください。

1// Create a generic sObject variable.
2SObject sObj = Database.query('SELECT Id FROM Account LIMIT 1');
3
4// Verify if that sObject variable is an Account token.
5System.assertEquals(
6   Account.sObjectType, 
7   sObj.getSObjectType());
8
9// Create a map of generic sObjects 
10Map<Integer, Account> m = new Map<Integer, Account>();
11
12// Verify if the map contains Account tokens.
13System.assertEquals(
14   Account.sObjectType, 
15   m.getSObjectType());

hashCode()

この対応付けに対応する hashcode を返します。

署名

public Integer hashCode()

戻り値

型: Integer

isEmpty()

対応付けのキーと値のペアが 0 の場合、true を返します。

署名

public Boolean isEmpty()

戻り値

型: Boolean

1Map<String, String> colorCodes = new Map<String, String>();
2Boolean empty = colorCodes.isEmpty();
3System.assertEquals(true, empty);

keySet()

対応付けのすべてのキーを含むセットを返します。

署名

public Set<Object> keySet()

戻り値

型: Set (of key type)

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6Set <String> colorSet = new Set<String>();
7colorSet = colorCodes.keySet();

put(key, value)

指定された値を対応付けの指定したキーに関連付けます。

署名

public Object put(Object key, Object value)

パラメータ

key
型: Object
value
型: Object

戻り値

型: Object

使用方法

対応付けにこのキーの対応付けが以前含まれていた場合、以前の値はメソッドで返され、その後置き換えられます。

キーが String の場合、キーの値では大文字と小文字が区別されます。

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'ff0000');
4colorCodes.put('Red', '#FF0000');
5// Red is now #FF0000

putAll(fromMap)

指定先の対応付けからすべての対応付けを、元の対応付けにコピーします。

署名

public Void putAll(Map fromMap)

パラメータ

fromMap
型: Map

戻り値

型: Void

使用方法

fromMap からの新しい対応付けによって、元の対応付けは置き換えられます。

1Map<String, String> map1 = new Map<String, String>();
2map1.put('Red','FF0000');
3Map<String, String> map2 = new Map<String, String>();
4map2.put('Blue','0000FF');
5// Add map1 entries to map2
6map2.putAll(map1);
7System.assertEquals(2, map2.size());

putAll(sobjectArray)

sObject レコードのリストを、Map<ID, sObject>、または Map<String, sObject> として宣言されている対応付けに追加します。

署名

public Void putAll(sObject[] sobjectArray)

パラメータ

sobjectArray
型: sObject[]

戻り値

型: Void

使用方法

このメソッドは、同じ入力の Map コンストラクタのコールと類似しています。

1List<Account> accts = new List<Account>();
2accts.add(new Account(Name='Account1'));
3accts.add(new Account(Name='Account2'));
4// Insert accounts so their IDs are populated.
5insert accts;
6Map<Id, Account> m = new Map<Id, Account>();
7// Add all the records to the map.
8m.putAll(accts);
9System.assertEquals(2, m.size());

remove(key)

指定されたキーの対応付けを対応付けから削除し、対応する値がある場合は、その値を返します。

署名

public Object remove(Key key)

パラメータ

key
型: Key

戻り値

型: Object

使用方法

キーが String の場合、キーの値では大文字と小文字が区別されます。

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6String myColor = colorCodes.remove('Blue');
7String code2 = colorCodes.get('Blue');
8
9System.assertEquals(null, code2);

size()

対応付けのキー-値のペアの数を返します。

署名

public Integer size()

戻り値

型: Integer

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6Integer mSize = colorCodes.size();
7system.assertEquals(2, mSize);

values()

対応付けのすべての値を含むリストを返します。

署名

public List<Object> values()

戻り値

型: List<Object>

使用方法

対応付け要素の順序は確定的です。順序は、同じコードの後続のどの実行でも同じです。たとえば、values() メソッドで、value1 とインデックス 0 および value2 とインデックス 1 を含むリストが返されるとします。その後同じコードを実行した場合も、これらの値が同じ順序で返されます。

1Map<String, String> colorCodes = new Map<String, String>();
2
3colorCodes.put('Red', 'FF0000');
4colorCodes.put('Blue', '0000A0');
5
6List<String> colors = new List<String>();
7colors = colorCodes.values();