#それぞれの特徴をおさらい
Apexのコレクション型としてあるList、Map、Setを改めてデバックしたりしながら特徴を抑えていきたいなと思います。
よく使うのはこんな感じですかね。
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());
.addは追加するindexを決めることもできます。並べ替えを変えたい時に意図して使う感じですね。
size()なんかはループを回したりする際に使ったりします。
Apexは便利ループがあるのでそこまで頻度は高くないですが。
##Map
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/langCon_apex_collections_maps.htm
日本語では対応付けというみたいです。
鍵があって、それを指定すると対応した値が帰って来るからってことですかね。
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());
keySetでfor文を回すなんてこともできるのでやり方を工夫すればMapはなかなか扱いやすい代物です。
また注意しないといけない点はkeyの値の重複は認められていないということです。
なので0='a',0='b'なんてことはありえないのでputする際はそういったことにも注意が必要です。
##Set
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());
SetのメソッドはListによく似ており、Listっぽく扱えますが、一番の特徴は何と言っても重複が許されていない点ではないでしょうか。
上の例でもあるように4つの値を入れたはずなのにサイズは3です。
aが重複しているため重複は除外されabcの値のみとなった形です。
triggerなど大量のデータが入ってくるものの同じ項目値が入ってきてそれを元にSOQLを
作るなんて時にはこのSetを使うといいと思います。
##まとめ
それぞれの違いを理解するとものすごくコーディングが捗りますし、何より処理時間の大幅削減も可能になります。
大量のデータをサクッと処理できるかっこいいプログラム書けるように頑張りましょう。
#profile
生まれも育ちも大阪の浪速中の浪速っ子が30才未経験からITエンジニアとして生きるブログもやってます。
よかったらみてください