SalesforceにおけるSetとは?
SalesforceにおけるSetは重複値のない、一意の要素のコレクションです。
Setメソッドは、Setキーワードを使って初期化された要素の順序がないコレクションで、セットで機能しています。
セットの要素は「プリミティブ型」、「コレクション型」、「sObject型」、「ユーザ定義型」、「組み込みApex型」のいずれかのデータ型が使えます。Setメソッドはすべてインスタンスメソッドで、特定のインスタンスで動作します。
セットの要素の一意性は、クラスで提供する「equalsメソッド」と「hashCodeメソッド」で判断されます。その他、すべての非プリミティブ型の一意性については、オブジェクトの項目の比較で判断されます。
セットに「String要素」が含まれるときは、要素では大文字と小文字が区別されます。大文字と小文字だけ違う2つの要素は、別ものとしてみなされます。
Setの詳細
Setは相互にネストすることができるコレクションを含められます。
例を挙げると、「Itegerセット」のリストのセットを作ることができます。
例)
Set myStringSet = new Set();
// Defines a new set with two elements
Set set1 = new Set{'New York', 'Paris'};
// Define a new set
Set mySet = new Set();
// Add two elements to the set
mySet.add(1);
mySet.add(3);
// Assert that the set contains the integer value we added
System.assert(mySet.contains(1));
// Remove the integer value from the set
mySet.remove(1);
Setと対応付けの定義
リストとSetの違いについて説明します。
これまではリストという、 1種類のコレクションが作られていました。リストと違うところは、セットの要素には特定の順序がありません。セットの要素には順序が付けられていませんので、重複する要素を含められません。
セットに既存の要素を追加する際、エラーは発生しませんが、新しい値はセットに追加されません。リストをループ処理するときはいつも、リストに追加された順で項目にアクセスしています。セットをループ処理する場合は、要素に対してランダムでアクセスします。
例)
public class Tea{
public static void orderTea(){
Set teaTypes = new Set ();
teaTypes.add('Black');
teaTypes.add('White');
teaTypes.add('Herbal');
system.debug(teaTypes);
}
}
Setメソッド
Setにはコレクションの種別ごとで独自のメソッドが存在します。
add(setElement)、addAll(fromList)、addAll(fromSet)、clear()、clone()、contains(setElement)、containsAll(listToCompare)、containsAll(setToCompare)、equals(set2)、hashCode()、isEmpty()、remove(setElement)、removeAll(listOfElementsToRemove)、removeAll(setOfElementsToRemove)、retainAll(listOfElementsToRetain)、retainAll(setOfElementsToRetain)、size()、toString()の18個あります。
追加・作成・保持メソッド
Setの追加と作成・保持のメソッドについて説明します。
「add(setElement)」は要素を追加します。「addAll(fromList)」はリストのすべての要素をセットに追加します。「addAll(fromSet)」はセットのすべての要素をセットに追加します。
「clone()」はセットの重複コピーを作成します。
「retainAll(listOfElementsToRetain)」は指定したリストに含まれる要素だけ保持します。「retainAll(setOfElementsToRetain)」は指定したセットに含まれる要素だけを保持します。
削除メソッド
Setの削除メソッドについて説明します。
「clear()」はセットからすべての要素を削除します。
「remove(setElement)」は指定した要素をセットから削除します。
「removeAll(listOfElementsToRemove)」は指定したリストの要素をセットから削除します。
「removeAll(setOfElementsToRemove)」は指定したセットの要素をセットから削除します。
返却メソッド
Setの返却メソッドについて説明します。
「contains(setElement)」はセットに指定した要素が存在する場合にtrueを返します。「containsAll(listToCompare)」はセットに指定したリストのすべての要素がある場合にtrueを返します。「containsAll(setToCompare)」はセットに指定したセットのすべての要素が含まれる場合にtrueを返します。
「equals(set2)」は指定したセットと等しい場合にtrueを返します。「hashCode()」はこのセットかつコンテンツに対応するhashcodeを返します。「isEmpty()」はセットの要素が0の場合にtrueを返します。「size()」はセットの要素の数を返します。「toString()」は設定済みの文字列表現を返します。
Setのコンストラクタ
SalesforceでのSetのコンストラクタについて説明します。
「Set
()」はSetクラスの新しいインスタンスを作ります。セットには任意のデータ型である「T」の要素を保持することができます。
「Set
(setToCopy)」は指定されたセットの要素をコピーして、Setクラスの新しいインスタンスを作ります。「T」は両方のセットの要素のデータ型であり、任意のデータ型を使えます。
Set
(listToCopy)はリスト要素をコピーして、Setクラスの新しいインスタンスを作ります。「T」はセットかつリストの要素のデータ型となり、任意のデータ型を使えます。
使用例
使用例について紹介します。
Set
()
// Create a set of strings
Set s1 = new Set();
// Add two strings to it
s1.add('item1');
s1.add('item2');
Set
(setToCopy)
Set s1 = new Set();
s1.add('item1');
s1.add('item2');
Set s2 = new Set(s1);
// The set elements in s2 are copied from s1
System.debug(s2);
Set
(listToCopy)
List ls = new List();
ls.add(1);
ls.add(2);
// Create a set based on a list
Set s1 = new Set(ls);
// Elements are copied from the list to this set
System.debug(s1);// DEBUG|{1, 2}
SalesforceでSetを活用しよう!
今回は、Salesforceの標準機能の1つである「Set」について紹介しました。
Setは覚えておくべきこと、注意すべき点は多いですが、使いこなせるようになれば、仕事の効率が大幅にアップします。
Setの使い方をイメージ、理解することができれば、転職活動にもとても役に立ちます。Salesforceへの転職を希望する人はぜひ、Setを活用できるようにしておきましょう。]]>
この記事の監修者・著者
-
株式会社オープンアップITエンジニア
-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞