こんにちは、にいるです。
今回はApexのコレクション、「Set」の使い方について、見ていきたいと思います。
1.Setとは
Setは重複を含まない要素を格納することができます。
はい、初学者の方にはもう意味わからないですよね。
つまり、重複しないものをいれる箱と考えておいていいと思います!
要素は値です!
よく使用されるのはID型ですね。
あるListのレコードIDだけを取得して、対象のレコードだけでSOQLを実行したい時などによく使うことがあります。
※特定の購読者グループリストからさらに年齢で絞った購読者にするなど。
1 2 3 4 5 6 |
Set<String> sets = new Set<String>{}; List<Account> = [ Select Id,Name From Account Where id = :sets]; |
2.Setの使い方
宣言方法は、Listと同じくデータ型を<>で囲んで使用します。
1 2 |
// Setの変数宣言方法 Set<String> stringSet = new Set<String>(); |
宣言時に値を代入する場合は、下記のように{}に値を入れて宣言します。
1 2 3 |
// 宣言時の代入方法 Set<String> set1 = new Set<String>{'Apple', 'Orange'}; System.debug('●set1● = '+ set1); |
3.Setのメソッド
次にSetのメソッドについて見ていきたいと思います。
合計で18個あります。
# | メソッド | 内容 |
1 | add(setElement) | 要素を追加します |
2 | addAll(fromList) | リストのすべての要素をセットに追加します |
3 | addAll(fromSet) | セットのすべての要素をセットに追加します |
4 | clear() | セットからすべての要素を削除します |
5 | clone() | セットの重複コピーを作成します |
6 | contains(setElement) | セットに指定した要素が存在する場合、trueを返します |
7 | containsAll(listToCompare) | セットに指定したリストのすべての要素がある場合、trueを返します |
8 | containsAll(setToCompare) | セットに指定したセットのすべての要素が含まれる場合、trueを返します |
9 | equals(set2) | 指定したセットと等しい場合は trueを返します |
10 | hashCode() | このセットおよびコンテンツに対応する hashcode を返します |
11 | isEmpty() | セットの要素が0の場合、trueを返します |
12 | remove(setElement) | 指定した要素をセットから削除します |
13 | removeAll(listOfElementsToRemove) | 指定したリストの要素をセットから削除します |
14 | removeAll(setOfElementsToRemove) | 指定したセットの要素をセットから削除します |
15 | retainAll(listOfElementsToRetain) | 指定したリストに含まれる要素のみを保持します |
16 | retainAll(setOfElementsToRetain) | 指定したセットに含まれる要素のみを保持します |
17 | size() | セットの要素の数を返します |
18 | toString() | 設定済みの文字列表現を返します |
メソッドもListクラスとほぼ同じですね。
addするにはこんな感じです。
1 2 3 4 5 |
// addの使い方 Set<String> set1 = new Set<String>{'Apple', 'Orange'}; System.debug('●set1のadd前● = ' + set1.size()); set1.add('Peach'); System.debug('●set1のadd後● = ' + set1.size()); |
デバッグでadd前後のサイズを見てみると増加しているのがわかりますね。
ちなみにAppleを二回入れてみると、Addされていないことがわかります。
これはAppleがすでにSetの中に存在しているからですね。
1 2 3 4 5 |
// addの使い方 Set<String> set1 = new Set<String>{'Apple', 'Orange'}; System.debug('●set1のadd前● = ' + set1.size()); set1.add('Apple'); System.debug('●set1のadd後● = ' + set1.size()); |
デバッグ結果です。
4.まとめ
いかがでしたでしょうか。
SetもListまでは多用しないですが、IDを使用する時は使うことが多いので覚えておいた方がいいですね。
重複する場合は、勝手に弾いてくれるので便利です。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!
コメント