こんにちは、にいるです
今回はApexのコレクション、「List」の使い方について、見ていきたいと思います
1.Listとは
ListはApexのコレクションの1つです
インデックス付きで、要素を格納することができます
もはや初学者の方には何を言ってるかわかりませんよね
コレクションは入れ物、要素はレコードや値と考えておいてください
このListにレコードを入れて(add)、DML操作したり、for文で特定のレコードだけ抽出したりできます
2.Listの使い方
続いて、Listの使い方です
ます、宣言方法ですが、Listの宣言方法は3種類あります
1 2 3 4 5 6 7 8 9 |
// Listの変数宣言方法 List<Account> accList1 = new List<Account>(); System.debug('●accList1● = ' + accList1.size()); List<Account> accList2 = new Account[5]; System.debug('●accList2● = ' + accList2.size()); Account[] accList3 = new Account[10]; System.debug('●accList3● = ' + accList3.size()); |
1つ目が一般的な宣言方法だと思います
2,3つ目は宣言時にリストのサイズを指定する方法です
デバッグすると、2が5、3が10のサイズということが確認できます
3.Listのメソッド
Listのメソッドについても見ていきたいと思います
数は気にしたことなかったんですが、20もありました
めちゃくちゃありますね
この中でも数個しか使ったことないですが(笑)
# | メソッド | 内容 |
1 | add(index, listElement) | リストの最後に要素を追加します |
2 | add(index, listElement) | 指定箇所に要素を追加します |
3 | addAll(fromList) | リストからリストに全要素を追加します |
4 | addAll(fromSet) | セットからリストに全要素を追加します |
5 | clear() | 要素を削除してサイズを0にします |
6 | clone() | リストの重複コピーを作成します |
7 | contains(listElement) | 指定した要素があればTrueを返します |
8 | deepClone(preserveId, preserveReadonlyTimestamps, preserveAutonumber) | sObjectレコードのリストの重複コピーを作成します |
9 | equals(list2) | 指定したリストとリストを比較して同一ならTrueを返します |
10 | get(index) | 指定されたインデックスに保存されたリスト要素を返します |
11 | getSObjectType() | sObjectのリストを構成するsObjectデータ型のトークンを返します |
12 | hashCode() | このリストおよびコンテンツに対応するhashcodeを返します |
13 | indexOf(listElement) | リストの指定した要素が最初に発生したインデックスを返しますこのリストに要素が含まれていない場合、-1を返します |
14 | isEmpty() | リストの要素が0の場合、trueを返します |
15 | iterator() | このリストのイテレータのインスタンスを返します |
16 | remove(index) | 指定されたインデックスに保存されたリスト要素を削除し、削除された要素を返します |
17 | set(index, listElement) | 特定のインデックスの要素に指定された値を設定します |
18 | size() | リストの要素の数を返します |
19 | sort() | リスト内の項目を昇順で並び替えます |
20 | toString() | リストの文字列表現を返します |
個人的によく使うものはaddやsize、isEmptyにcontainsです
例えばaddなら、for文の中でよく使います
1 2 3 4 5 6 7 8 9 10 |
List<Account> accList1 = new List<Account>(); System.debug('●accList1● = ' + accList1.size()); // addの使い方 Account acc1 = [Select id From Account Limit 1]; Account acc2 = [Select id From Account Limit 1]; Account acc3 = [Select id From Account Limit 1]; System.debug('●accList1のadd前● = ' + accList1.size()); accList1.add(acc1); System.debug('●accList1のadd後● = ' + accList1.size()); |
デバッグするとこんな感じです
例外処理のためにsizeやisEmptyで分岐を作成できます
1 2 3 4 5 6 7 |
List<Account> accList1 = new List<Account>(); System.debug('●accList1● = ' + accList1.size()); // isEmptyの使い方 if(accList1.isEmpty()){ System.debug('accList1は空っぽだよ'); } |
デバッグするとこんな感じです
4.まとめ
いかがでしたでしょうか
ListはApexを使用する上で重要なコレクションです
このListが使用できないと複数レコードの操作を行うことはほぼ不可能と言ってもいいくらい重要です
まずはSOQLでレコードを取得してそれをVisualforceに表示するという方法で触ってみるといいかもしれません
ぜひ、皆さんも実際に書いてみてください
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください
ではでは!