List クラス
名前空間
使用方法
List メソッドはすべてインスタンスメソッドで、リストの特定のインスタンスで動作します。たとえば、次のコードは myList からすべての要素を削除します。
1myList.clear();clear メソッドにはパラメータは含まれませんが、それをコールするリスト自身が暗黙的なパラメータです。
List についての詳細は、「Lists」を参照してください。
List コンストラクタ
List のコンストラクタは次のとおりです。
List<T>()
署名
public List<T>()
例
1// Create a list
2List<Integer> ls1 = new List<Integer>();
3// Add two integers to the list
4ls1.add(1);
5ls1.add(2);List<T>(listToCopy)
署名
public List<T>(List<T> listToCopy)
パラメータ
- listToCopy
- 型: List<T>
- このリストの初期化に使用される要素を含むリスト。T はリスト要素のデータ型です。
例
1List<Integer> ls1 = new List<Integer>();
2ls1.add(1);
3ls1.add(2);
4// Create a list based on an existing one
5List<Integer> ls2 = new List<Integer>(ls1);
6// ls2 elements are copied from ls1
7System.debug(ls2);// DEBUG|(1, 2)List<T>(setToCopy)
署名
public List<T>(Set<T> setToCopy)
パラメータ
- setToCopy
- 型: Set<T>
- このリストの初期化で使用する要素を含むセット。T はセット要素のデータ型です。
例
1Set<Integer> s1 = new Set<Integer>();
2s1.add(1);
3s1.add(2);
4// Create a list based on a set
5List<Integer> ls = new List<Integer>(s1);
6// ls elements are copied from s1
7System.debug(ls);// DEBUG|(1, 2)List メソッド
List のメソッドは次のとおりです。すべてインスタンスメソッドです。
add(listElement)
署名
public Void add(Object listElement)
パラメータ
- listElement
- 型: Object
戻り値
型: Void
例
1List<Integer> myList = new List<Integer>();
2myList.add(47);
3Integer myNumber = myList.get(0);
4system.assertEquals(47, myNumber);add(index, listElement)
署名
public Void add(Integer index, Object listElement)
パラメータ
- index
- 型: Integer
- listElement
- 型: Object
戻り値
型: Void
例
次の例では 6 つの要素を持つリストが作成され、最初と 2 番目のインデックス位置に整数が追加されます。
1List<Integer> myList = new Integer[6];
2myList.add(0, 47);
3myList.add(1, 52);
4system.assertEquals(52, myList.get(1));addAll(fromList)
署名
public Void addAll(List fromList)
パラメータ
- fromList
- 型: List
戻り値
型: Void
addAll(fromSet)
署名
public Void addAll(Set fromSet)
パラメータ
- fromSet
- 型: Set
戻り値
型: Void
clone()
署名
public List<Object> clone()
戻り値
型: List<Object>
使用方法
コピーされたリストは、現在のリストと同じデータ型です。
これが sObject レコードのリストである場合、重複リストはリストの浅いコピーとなります。つまり、重複には各オブジェクトへの参照がありますが、sObject レコード自体は重複しません。次に例を示します。
sObject レコードもコピーするには、deepClone メソッドを使用する必要があります。
例
1Account a = new Account(Name='Acme', BillingCity='New York');
2
3Account b = new Account();
4Account[] q1 = new Account[]{a,b};
5
6Account[] q2 = q1.clone();
7q1[0].BillingCity = 'San Francisco';
8
9System.assertEquals(
10 'San Francisco',
11 q1[0].BillingCity);
12System.assertEquals(
13 'San Francisco',
14 q2[0].BillingCity);deepClone(preserveId, preserveReadonlyTimestamps, preserveAutonumber)
署名
public List<Object> deepClone(Boolean preserveId, Boolean preserveReadonlyTimestamps, Boolean preserveAutonumber)
パラメータ
- preserveId
- 型: Boolean
- (省略可能) preserveId 引数は、元のオブジェクトの ID を重複で保持するか削除するかを指定します。true に設定すると、ID はコピーされたオブジェクトにコピーされます。デフォルトは false であるため、ID はクリアされます。
- preserveReadonlyTimestamps
- 型: Boolean
- (省略可能) preserveReadonlyTimestamps 引数は、参照のみのタイムスタンプとユーザ ID 項目を重複で保持するか削除するかを指定します。true に設定すると、参照のみの項目 CreatedById、CreatedDate、LastModifiedById、および LastModifiedDate は、コピーされたオブジェクトにコピーされます。デフォルトは false であるため、値はクリアされます。
- preserveAutonumber
- 型: Boolean
- (省略可能) preserveAutonumber 引数は、元のオブジェクトの自動採番項目を重複で保持するか削除するかを指定します。true に設定すると、自動採番項目はコピーされたオブジェクトにコピーされます。デフォルトは false であるため、自動採番項目はクリアされます。
戻り値
型: List<Object>
使用方法
返されたリストは、現在のリストと同じデータ型です。
含まれる sObject レコードが重複しないようにしてリストの浅いコピーを作成するには、clone メソッドを使用します。
例
この例は、2 つの取引先を含むリストのディープコピーを実行します。
1Account a = new Account(Name='Acme', BillingCity='New York');
2
3Account b = new Account(Name='Salesforce');
4
5Account[] q1 = new Account[]{a,b};
6
7Account[] q2 = q1.deepClone();
8q1[0].BillingCity = 'San Francisco';
9
10System.assertEquals(
11 'San Francisco',
12 q1[0].BillingCity);
13
14System.assertEquals(
15 'New York',
16 q2[0].BillingCity);1insert q1;
2
3List<Account> accts = [SELECT CreatedById, CreatedDate, LastModifiedById,
4 LastModifiedDate, BillingCity
5 FROM Account
6 WHERE Name='Acme' OR Name='Salesforce'];
7
8// Clone list while preserving timestamp and user ID fields.
9Account[] q3 = accts.deepClone(false,true,false);
10
11// Verify timestamp fields are preserved for the first list element.
12System.assertEquals(
13 accts[0].CreatedById,
14 q3[0].CreatedById);
15System.assertEquals(
16 accts[0].CreatedDate,
17 q3[0].CreatedDate);
18System.assertEquals(
19 accts[0].LastModifiedById,
20 q3[0].LastModifiedById);
21System.assertEquals(
22 accts[0].LastModifiedDate,
23 q3[0].LastModifiedDate);equals(list2)
署名
public Boolean equals(List list2)
パラメータ
- list2
- 型: List
- このリストと比較するリストです。
戻り値
型: Boolean
使用方法
それぞれの要素が等しく、要素の順序が同じである場合、2 つのリストは等しくなります。== 演算子は、リストの要素を比較するために使用します。
== 演算子は、equals メソッドのコールに相当します。そのため、list1 == list2; の代わりに list1.equals(list2); をコールできます。
get(index)
署名
public Object get(Integer index)
パラメータ
- index
- 型: Integer
戻り値
型: Object
使用方法
プリミティブデータ型または sObject 型の一次元リストの要素を参照するには、次の例に示すように、リスト名の後に要素のインデックス位置を角括弧で囲んで表記することもできます。
例
1List<Integer> myList = new List<Integer>();
2myList.add(47);
3Integer myNumber = myList.get(0);
4system.assertEquals(47, myNumber);1List<String> colors = new String[3];
2colors[0] = 'Red';
3colors[1] = 'Blue';
4colors[2] = 'Green';getSObjectType()
署名
public Schema.SObjectType getSObjectType()
戻り値
使用方法
このメソッドを Describe Information と共に使用して、リストに特定のデータ型の sObject を含めるかどうかを指定します。
このメソッドは sObject で構成されているリストでのみ使用できます。
詳細は、「Apex Describe Information について」を参照してください。
例
1// Create a generic sObject variable.
2SObject sObj = Database.query('SELECT Id FROM Account LIMIT 1');
3
4// Verify if that sObject variable is an Account token.
5System.assertEquals(
6 Account.sObjectType,
7 sObj.getSObjectType());
8
9// Create a list of generic sObjects.
10List<sObject> q = new Account[]{};
11
12// Verify if the list of sObjects
13// contains Account tokens.
14System.assertEquals(
15 Account.sObjectType,
16 q.getSObjectType());iterator()
署名
public Iterator iterator()
戻り値
型: Iterator
例
1global class CustomIterable
2 implements Iterator<Account>{
3
4 List<Account> accs {get; set;}
5 Integer i {get; set;}
6
7 public CustomIterable(){
8 accs =
9 [SELECT Id, Name,
10 NumberOfEmployees
11 FROM Account
12 WHERE Name = 'false'];
13 i = 0;
14 }
15
16 global boolean hasNext(){
17 if(i >= accs.size()) {
18 return false;
19 } else {
20 return true;
21 }
22 }
23
24 global Account next(){
25 // 8 is an arbitrary
26 // constant in this example
27 // that represents the
28 // maximum size of the list.
29 if(i == 8){return null;}
30 i++;
31 return accs[i-1];
32 }
33}remove(index)
署名
public Object remove(Integer index)
パラメータ
- index
- 型: Integer
戻り値
型: Object
例
1List<String> colors = new String[3];
2colors[0] = 'Red';
3colors[1] = 'Blue';
4colors[2] = 'Green';
5String s1 = colors.remove(2);
6system.assertEquals('Green', s1);set(index, listElement)
署名
public Void set(Integer index, Object listElement)
パラメータ
- index
- 型: Integer
- 設定するリスト要素のインデックスです。
- listElement
- 型: Object
- 設定するリスト要素の値です。
戻り値
型: Void
使用方法
プリミティブデータ型または sObject の一次元リストの要素を設定するには、リスト名の後に要素のインデックス位置を角括弧で囲んで表記することもできます。
例
1List<Integer> myList = new Integer[6];
2myList.set(0, 47);
3myList.set(1, 52);
4system.assertEquals(52, myList.get(1));1List<String> colors = new String[3];
2colors[0] = 'Red';
3colors[1] = 'Blue';
4colors[2] = 'Green';size()
署名
public Integer size()
戻り値
型: Integer
例
1List<Integer> myList = new List<Integer>();
2Integer size = myList.size();
3system.assertEquals(0, size);
4
5List<Integer> myList2 = new Integer[6];
6Integer size2 = myList2.size();
7system.assertEquals(6, size2);sort()
署名
public Void sort()
戻り値
型: Void
使用方法
このメソッドを使用して、プリミティブ型、SelectOption 要素、sObject (標準オブジェクトとカスタムオブジェクト) を並び替えできます。sObject に使用される並び替え順についての詳細は、「sObject のリストの並び替え」を参照してください。カスタムデータ型 (Apex クラス) が Comparable インターフェースを実装している場合は、カスタムデータ型も並び替えできます。
15 文字の ID と 18 文字の ID の両方を含む List<Id> で sort() メソッドを使用する場合、API バージョン 35.0 以降では同じレコードの ID がまとめて並び替えられます。
例
次の例で、リストには 3 つの要素があります。リストを並び替えると、最初の要素には値が割り当てられていないため null、2 番目の要素の値は 5 になります。
1List<Integer> q1 = new Integer[3];
2
3// Assign values to the first two elements.
4q1[0] = 10;
5q1[1] = 5;
6
7q1.sort();
8// First element is null, second is 5.
9system.assertEquals(5, q1.get(1));