2021/05/24

SalesforceにおけるSetとは?詳細や注意点をご紹介

 
  

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

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】