12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【salesforce】改めてList,Map,Setの特徴をおさらい

Last updated at Posted at 2019-09-19

#それぞれの特徴をおさらい

Apexのコレクション型としてあるList、Map、Setを改めてデバックしたりしながら特徴を抑えていきたいなと思います。

##List
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_methods_system_list.htm

よく使うのはこんな感じですかね。

sample
List<String> hogeList = new List<String>();

hogeList.add('b');
hogeList.add(0,'a');

system.debug(hogeList);

List<String> piyoList = new List<String>();

piyoList.addAll(hogeList);
system.debug('想定はtrue--------'+piyoList.contains('a'));
system.debug('想定はb--------'+piyoList.get(1));
system.debug('想定は2--------'+piyoList.size());
スクリーンショット 2019-09-19 22.16.06.png

.addは追加するindexを決めることもできます。並べ替えを変えたい時に意図して使う感じですね。
size()なんかはループを回したりする際に使ったりします。
Apexは便利ループがあるのでそこまで頻度は高くないですが。

##Map
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/langCon_apex_collections_maps.htm
日本語では対応付けというみたいです。
鍵があって、それを指定すると対応した値が帰って来るからってことですかね。

sample
Map<Integer, String> hogeMap = new Map<Integer, String>();

hogeMap.put(0,'a');
hogeMap.put(1,'b');
hogeMap.put(2,'c');

system.debug(hogeMap);
system.debug('想定は0.1.2--------' + hogeMap.keySet());
system.debug('想定はa.b.c--------' + hogeMap.values());

hogeMap.remove(1);
system.debug(hogeMap);
system.debug('想定は0.2--------' + hogeMap.keySet());
system.debug('想定はa.c--------' + hogeMap.values());
スクリーンショット 2019-09-19 22.27.26.png

keySetでfor文を回すなんてこともできるのでやり方を工夫すればMapはなかなか扱いやすい代物です。
また注意しないといけない点はkeyの値の重複は認められていないということです。
なので0='a',0='b'なんてことはありえないのでputする際はそういったことにも注意が必要です。

##Set

sample
Set<String> hogeSet = new Set<String>();

hogeSet.add('a');
hogeSet.add('b');
hogeSet.add('c');
hogeSet.add('a');

system.debug('想定はa.b.c--------' + hogeSet);
system.debug('想定は3--------' + hogeSet.size());
スクリーンショット 2019-09-19 22.33.26.png

SetのメソッドはListによく似ており、Listっぽく扱えますが、一番の特徴は何と言っても重複が許されていない点ではないでしょうか。

上の例でもあるように4つの値を入れたはずなのにサイズは3です。
aが重複しているため重複は除外されabcの値のみとなった形です。

triggerなど大量のデータが入ってくるものの同じ項目値が入ってきてそれを元にSOQLを
作るなんて時にはこのSetを使うといいと思います。

##まとめ

それぞれの違いを理解するとものすごくコーディングが捗りますし、何より処理時間の大幅削減も可能になります。
大量のデータをサクッと処理できるかっこいいプログラム書けるように頑張りましょう。

#profile

生まれも育ちも大阪の浪速中の浪速っ子が30才未経験からITエンジニアとして生きるブログもやってます。
よかったらみてください:muscle_tone2:

PVアクセスランキング にほんブログ村

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?