セット
セットは、重複を含まない要素の順序付けされていないコレクションです。セットの要素には、プリミティブ型、コレクション型、sObject 型、ユーザー定義型、組み込み Apex 型のいずれかのデータ型を使用できます。
次の表に、都市名を使用する文字列のセットを示します。
| 'San Francisco' | 'New York' | 'Paris' | 'Tokyo' |
セットには相互にネストすることが可能なコレクションを含めることができます。たとえば、Iteger セットのリストのセットを作成できます。セット内では、コレクションを最大 7 レベルまでネストできます。つまり、最大で 8 つのレベルを使用できます。
セットを宣言するには、<> 文字で囲まれたプリミティブデータ型名の前に Set キーワードを使用します。次に例を示します。
1Set<String> myStringSet = new Set<String>();次の例は、ハードコード化された 2 つの文字列値を使用してセットを作成する方法を示しています。
1// Defines a new set with two elements
2Set<String> set1 = new Set<String>{'New York', 'Paris'};セットの要素にアクセスするには、Apex が提供するシステムメソッドを使用します。次に例を示します。
1// Define a new set
2Set<Integer> mySet = new Set<Integer>();
3// Add two elements to the set
4mySet.add(1);
5mySet.add(3);
6// Assert that the set contains the integer value we added
7System.assert(mySet.contains(1));
8// Remove the integer value from the set
9mySet.remove(1);次の例は、別のセットの要素からセットを作成する方法を示しています。
1// Define a new set that contains the
2// elements of the set created in the previous example
3Set<Integer> mySet2 = new Set<Integer>(mySet);
4// Assert that the set size equals 1
5// Note: The set from the previous example contains only one value
6System.assert(mySet2.size() == 1);サポートされるすべてのセットシステムメソッドの全リストなどの詳細は、「Set クラス」を参照してください。
セットについて、次の点に注意してください。
- Java と異なり、Apex 開発者は、宣言でセットを実装するために使用するアルゴリズム (HashSet または TreeSet など) を参照する必要がありません。Apex は、すべてのセットにハッシュ構造を使用します。
- セットは、順序付けされていないコレクションで、特定のインデックスではセット要素にアクセスできません。セット要素しか反復できません。
- セット要素の反復順序は確定的なため、同じコードの後続のどの実行でも順序は同じです。