MENU
Abo
某SIer勤務。
ITエンジニアです。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Apex】分かる!分かるぞ!Setの使い方【Salesforce】

今回は「Setの使い方」について解説しますよー。

目次

Setの特徴

Setの特徴は以下の2つですね。

Setの違い
  1. 順序がない
  2. 値の重複がNG

ちなみに、そもそもSetやListの概念がよくわかってないという方はこちらの解説をのぞいてみてください。

Setの使い方

Setの使い方を以下の2ステップで解説します。

1. Setを宣言しよう

Setはデータ型を<>で囲って宣言します。

//Setの宣言
Set<String> strSet = new Set<String>();

Listと同じですね。

2. Setに値を入れよう

さて、値の入れ方ですが、こちらもListで使用されているようなやり方ですね。

ここでは以下の2つの方法を使ってSetに要素を追加していきます。

Setに値を追加する方法
  1. addメソッドを使用
  2. 宣言時に追加
/**********
**①addメソッドを使用して追加
**********/
Set<String> fruitSet1 = new Set<String>();

//要素を追加
fruitSet1.add('リンゴ');
fruitSet1.add('ミカン');
fruitSet1.add('リンゴ');
fruitSet1.add('モモ');
fruitSet1.add('ブドウ');

//Setの中身の確認
system.debug('fruitSet1の中身:' + fruitSet1);


/**********
**③宣言時に要素を追加
**********/
Set<String> fruitSet2 = new Set<String>{'リンゴ', 'ミカン', 'リンゴ', 'モモ', 'ブドウ'};

//リストの中身の確認
system.debug('fruitSet2の中身:' + fruitSet2);

上のコードでは、「fruitSet1」と「fruitSet2」というSetにそれぞれフルーツ要素を格納しています。

2つのSetの中身を確認すると、

どちらのSetにも「リンゴ」を2つ入れたはずなのに、1つしか入っていませんね。

また、「リンゴ」→「ミカン」の順番で要素を入れたにもかかわらず、「ブドウ」が先頭に来ています。

このように、SetではListで可能だった重複値の格納ができません

また、Listとは違い順番をもたないため、index(場所番号)を指定して要素を格納や取得することもできません。

要素に順番がなく、重複の値はNGこれがSetです。

Setのメソッド

以下、Setで使用可能なメソッドです。

それぞれの使い方は公式レファレンスをのぞいてみてください。

>> Setのメソッド【公式】

スクロールできます
Noメソッド説明
1add(setElement)要素がセットに追加されていない場合は、追加する。
2addAll(fromList)指定されたリストのすべての要素がセットに追加されていない場合は、追加する。
3addAll(fromSet)指定されたセットのすべての要素が、メソッドをコールするセットに追加されていない場合は、追加する。
4clear()セットからすべての要素を削除する。
5clone()セットの重複コピーを作成する。
6contains(setElement)セットに指定した要素が存在する場合、true を返す。
7containsAll(listToCompare)セットに指定したリストのすべての要素がある場合、true を返す。リストは、メソッドをコールするセットと同じデータ型である必要がある。
8containsAll(setToCompare)セットに指定したセットのすべての要素が含まれる場合、true を返す。指定されたセットは、メソッドをコールする元のセットと同じデータ型である必要がある。
9equals(set2)このセットと指定されたセットを比較し、両方のセットが等しい場合は true を返し、そうでない場合は false を返す。
10hashCode()このセットおよびコンテンツに対応する hashcode を返す。
11isEmpty()セットの要素が 0 の場合、true を返す。
12remove(setElement)指定した要素がセットにある場合は、セットから削除する。
13removeAll(listOfElementsToRemove)指定したリストの要素がセットにある場合は、セットから削除する。
14removeAll(setOfElementsToRemove)指定したセットの要素が元のセットにある場合は、削除する。
15retainAll(listOfElementsToRetain)指定したリストに含まれるこのセットの要素のみを保持する。
16retainAll(setOfElementsToRetain)指定したセットに含まれる元のセットの要素のみを保持する。
17size()セットの要素の数 (基数) を返す。
18toString()設定済みの文字列表現を返す。

まとめ

今回は「Setの使い方」について解説しました。

最初のうちはSetの使いどころが分からないかもしれませんね。

そんな時は次の問いに答えるようにします。

  • 値の重複があってもよいか?
  • 値の順序は重要か?

いずれかの答えが「Yes」の場合はListを使用します。

どちらも「No」の場合は、Setを使用しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
Salesforceエンジニアです。
日々の学びをつらつらと書いています。
Certified Administrator
Certified Platform DeveloperⅠ
Certified Platform DeveloperⅡ
Certified Sales Cloud Consultant

コメント

コメントする

CAPTCHA


目次