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

【Apex】ListとSetの違いを超丁寧に図で解説【Salesforce】

今回は、「ListとSetの違い」について解説します。

ListとSetは、「コレクション」と呼ばれており、Apex開発でも必ず使用する要素だと思いますが、この2つの違いを明確に説明できますか?

恥ずかしながら自分はパッとこたえられる自信がなかったのでここにまとめます。

目次

ListとSetの違い

まず、結論から。

ListとSetの違い
  • List:順序通りに並べられた要素の列(値の重複OK)
  • Set:順序がない要素の集まり(値の重複NG)

これで理解できた方は、この後の内容を読み進める必要は特にないと思います(笑)

自分はよくわからなかった組なので、さらに読み進めることにします。

Listとは

まずListに関してですが、

Listとは、下の図のようなものを指します。

それぞれのフルーツ(要素)に前から番号が割り振られ(0始まりな点に注意)、一列に連なっています。

さらに、「リンゴ」という同じ要素が複数ありますが、特に問題なくつながれています。

これがListです。

実際にListを作成して確認してみましょう。

/**********
**List
**********/
List<String> fruitList1 = new List<String>();

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

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

上のコードでは、「fruitList1」というListに、フルーツ(要素)を順番に入れています。

すべての要素を入れた後に、fruitList1の中身を確認すると、

重複した要素である「リンゴ」が2つとも格納されています。

また、要素を加えた順番通りに入っていますね。そして、順番通りに入っているということはindexを指定して値を取り出すことも可能ということです。

順序通りに並べられていて、値の重複もOKこれがListです。

要素の取り出し方や詳しいListの使い方については、以下の記事をご覧ください。

Setとは

次にSetを見てみましょう。

Listの時と同様、フルーツの要素がありますが、一列に連なっているわけでも、番号が振られているわけでもないですね。

ただの1つのまとまりとして、同じ袋に入れられているような感じです。

さらに、重複した値を同じまとまりに入れることはできないので、リンゴが1つ追い出されてしまっています。

これがSetの特徴です。

こちらも同様にデータで確認してみましょう。

/**********
**Set
**********/
Set<String> fruitSet1 = new Set<String>();

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

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

上のコードでは、「fruitSet1」というSetに、フルーツ(要素)を順番に入れています。

すべての要素を入れた後に、debugでfruitSet1の中身を確認すると、

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

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

順番がないのでListのようにindex指定して要素を取り出すことはできません

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

詳しいSetの使い方については、以下の記事をご覧ください。

ListとSetの使いわけ

ListとSet、どちらを使うべきか迷った時は、以下の2つの質問に答えるようにします。

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

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

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

まとめ

今回は、「ListとSetの違い」について解説しました。

もう一度、ListとSetの違いをまとめると、

ListとSetの違い
  • List:順序通りに並べられた要素の列(値の重複OK)
  • Set:順序がない要素の集まり(値の重複NG)

となります。

状況に応じて使い分けられるように練習ですね。

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

この記事を書いた人

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

コメント

コメントする

CAPTCHA


目次