この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

List クラス

List コレクション型のメソッドが含まれます。

名前空間

System

使用方法

List メソッドはすべてインスタンスメソッドで、リストの特定のインスタンスで動作します。たとえば、次のコードは myList からすべての要素を削除します。

1myList.clear();

clear メソッドにはパラメータは含まれませんが、それをコールするリスト自身が暗黙的なパラメータです。

List についての詳細は、Listsを参照してください。

List コンストラクタ

List のコンストラクタは次のとおりです。

List<T>()

List クラスの新しいインスタンスを作成します。リストには任意のデータ型 T の要素を保持できます。

署名

public List<T>()

1swfobject.registerObject("clippy.codeblock-1", "9");// Create a list
2List<Integer> ls1 = new List<Integer>();
3// Add two integers to the list
4ls1.add(1);
5ls1.add(2);
6

List<T>(List<T>)

指定されたリストから要素をコピーして、List クラスの新しいインスタンスを作成します。T は両方のリストの要素のデータ型で、任意のデータ型を使用できます。

署名

public List<T>(List<T> listToCopy)

パラメータ

listToCopy
型: List<T>
このリストの初期化に使用される要素を含むリスト。T はリスト要素のデータ型です。

1swfobject.registerObject("clippy.codeblock-2", "9");List<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>(Set<T>)

指定されたセットから要素をコピーして、List クラスの新しいインスタンスを作成します。T はセットおよびリストの要素のデータ型で、任意のデータ型を使用できます。

署名

public List<T>(Set<T> setToCopy)

パラメータ

setToCopy
型: Set<T>
このリストの初期化で使用する要素を含むセット。T はセット要素のデータ型です。

1swfobject.registerObject("clippy.codeblock-3", "9");Set<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(Object)

リストの最後に要素を追加します。

署名

public Void add(Object listElement)

パラメータ

listElement
型: Object

戻り値

型: Void

1List<Integer> myList = new List<Integer>();
2myList.add(47);
3Integer myNumber = myList.get(0);
4system.assertEquals(myNumber, 47);

add(Integer, Object)

要素をリストの指定されたインデックスの位置に挿入します。

署名

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(myList.get(1), 52);

addAll(List)

指定されたリストのすべての要素を、メソッドをコールするリストに追加します。両方のリストは同じデータ型である必要があります。

署名

public Void addAll(List fromList)

パラメータ

fromList
型: List

戻り値

型: Void

addAll(Set)

指定されたセットのすべての要素を、メソッドをコールするリストに追加します。セットとリストのデータ型は同じである必要があります。

署名

public Void addAll(Set fromSet)

パラメータ

fromSet
型: Set

戻り値

型: Void

clear()

すべての要素をリストから削除し、続いてリストの長さを 0 に設定します。

署名

public Void clear()

戻り値

型: Void

clone()

リストの重複コピーを作成します。

署名

public List<Object> clone()

戻り値

型: List<Object>

使用方法

コピーされたリストは、現在のリストと同じデータ型です。

これが sObject レコードのリストである場合、重複リストはリストの浅いコピーとなります。つまり、重複には各オブジェクトへの参照がありますが、sObject レコード自体は重複しません。次に例を示します。

sObject レコードもコピーするには、deepClone メソッドを使用する必要があります。

1Account a = new 
2     Account(Name='Acme',
3             BillingCity='New York');
4
5Account b = new Account();
6Account[] q1 = new 
7     Account[]{a,b};
8
9Account[] q2 = q1.clone();
10q1[0].BillingCity = 'San Francisco';
11
12System.assertEquals(
13      q1[0].BillingCity,
14      'San Francisco');
15System.assertEquals(
16      q2[0].BillingCity, 
17      'San Francisco');

deepClone(Boolean, Boolean, Boolean)

sObject レコード自体を含む、sObject レコードのリストの重複コピーを作成します。

署名

public List<Object> deepClone(Boolean opt_preserve_id, Boolean opt_preserve_readonly_timestamps, Boolean opt_preserve_autonumber)

パラメータ

opt_preserve_id
型: Boolean
(省略可能) opt_preserve_id 引数は、元のオブジェクトの ID を重複で保持するか削除するかを指定します。true に設定すると、ID はコピーされたオブジェクトにコピーされます。デフォルトは false であるため、ID はクリアされます。
opt_preserve_readonly_timestamps
型: Boolean
(省略可能) opt_preserve_readonly_timestamps 引数は、参照のみのタイムスタンプとユーザ ID 項目を重複で保持するか削除するかを指定します。true に設定すると、参照のみの項目 CreatedByIdCreatedDateLastModifiedById、および LastModifiedDate は、コピーされたオブジェクトにコピーされます。デフォルトは false であるため、値はクリアされます。
opt_preserve_autonumber
型: Boolean
(省略可能) opt_preserve_autonumber 引数は、元のオブジェクトの自動採番項目を重複で保持するか削除するかを指定します。true に設定すると、自動採番項目はコピーされたオブジェクトにコピーされます。デフォルトは false であるため、自動採番項目はクリアされます。

戻り値

型: List<Object>

使用方法

返されたリストは、現在のリストと同じデータ型です。

  • deepClone はプリミティブデータ型のリストではなく、sObject のリストにのみ動作します。
  • Salesforce.com API バージョン 22.0 以前を使用して保存された Apex の場合、opt_preserve_id 引数のデフォルト値は true のため、ID は保持されます。

メモ

含まれる sObject レコードが重複しないようにしてリストの浅いコピーを作成するには、clone メソッドを使用します。

この例は、2 つの取引先を含むリストのディープコピーを実行します。

1Account a = new 
2   Account(Name='Acme', 
3           BillingCity='New York');
4
5Account b = new Account(
6   Name='Salesforce');
7
8Account[] q1 = new 
9     Account[]{a,b};
10
11Account[] q2 = q1.deepClone();
12q1[0].BillingCity = 'San Francisco';
13
14System.assertEquals(
15     q1[0].BillingCity, 
16     'San Francisco');
17
18System.assertEquals(
19     q2[0].BillingCity,
20     'New York');
この例は上記の例に基づいて、保持された参照のみのタイムスタンプとユーザ ID 項目を使用してリストをコピーする方法を示します。
1insert q1;
2
3List<Account> accts =
4   [SELECT CreatedById, 
5   CreatedDate, LastModifiedById, 
6   LastModifiedDate, BillingCity 
7   FROM Account 
8   WHERE Name='Acme' OR 
9     Name='Salesforce'];
10
11// Clone list while preserving 
12// timestamp and user ID fields.
13Account[] q3 = 
14   accts.deepClone(false,true,false);
15
16// Verify timestamp fields are 
17// preserved for the first 
18// list element. 
19System.assertEquals(
20    q3[0].CreatedById, 
21    accts[0].CreatedById);
22System.assertEquals(
23    q3[0].CreatedDate, 
24    accts[0].CreatedDate);
25System.assertEquals(
26    q3[0].LastModifiedById,
27    accts[0].LastModifiedById);
28System.assertEquals(
29    q3[0].LastModifiedDate,
30    accts[0].LastModifiedDate);

equals(List)

このリストと指定されたリストを比較し、両方のリストが等しい場合は true を返し、そうでない場合は false を返します。

署名

public Boolean equals(List list2)

パラメータ

list2
型: List
このリストと比較するリストです。

戻り値

型: Boolean

使用方法

それぞれの要素が等しく、要素の順序が同じである場合、2 つのリストは等しくなります。== 演算子は、リストの要素を比較するために使用します。

== 演算子は、equals メソッドのコールに相当します。そのため、list1 == list2; の代わりに list1.equals(list2); をコールできます。

get(Integer)

指定されたインデックスに保存されたリスト要素を返します。

署名

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(myNumber, 47);
1List<String> colors = new String[3];
2colors[0] = 'Red';
3colors[1] = 'Blue';
4colors[2] = 'Green';

getSObjectType()

sObject のリストを構成する sObject データ型のトークンを返します。

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType

使用方法

このメソッドを Describe Information と共に使用して、リストに特定のデータ型の sObject を含めるかどうかを指定します。

このメソッドは sObject で構成されているリストでのみ使用できます。

詳細は、Apex Describe Information についてを参照してください。

1Account a = new Account(name='test');
2insert a;
3// Create a generic sObject 
4// variable s
5SObject s = Database.query
6  ('SELECT Id FROM Account ' + 
7   'LIMIT 1');
8
9// Verify if that sObject 
10// variable is 
11// an Account token
12System.assertEquals(
13   s.getSObjectType(), 
14   Account.sObjectType);
15
16// Create a list of 
17// generic sObjects 
18List<sObject> q = 
19   new Account[]{};
20
21// Verify if the list of 
22// sObjects 
23// contains Account tokens
24System.assertEquals(
25   q.getSObjectType(), 
26   Account.sObjectType);

hashCode()

このリストおよびコンテンツに対応する hashcode を返します。

署名

public Integer hashCode()

戻り値

型: Integer

isEmpty()

リストの要素が 0 の場合、true を返します。

署名

public Boolean isEmpty()

戻り値

型: Boolean

iterator()

このリストのイテレータのインスタンスを返します。

署名

public Iterator iterator()

戻り値

型: Iterator

使用方法

返されたイテレータから反復可能なメソッド hasNext および next を使用して、リスト内で反復できます。

リストで iterable メソッドを使用するために iterable インターフェースを実装する必要はありません。

メモ

「カスタムイテレータ」を参照してください。

1swfobject.registerObject("clippy.IterableExampleCRM", "9");global 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(Integer)

指定されたインデックスに保存されたリスト要素を削除し、削除された要素を返します。

署名

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(S1, 'Green');

set(Integer, Object)

特定のインデックスの要素に指定された値を設定します。

署名

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(myList.get(1), 52);
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(size, 0);
4
5List<Integer> myList2 = new Integer[6];
6Integer size2 = myList2.size();
7system.assertEquals(size2, 6);

sort()

リスト内の項目を昇順で並び替えます。

署名

public Void sort()

戻り値

型: Void

使用方法

次の例で、リストには 3 つの要素があります。リストを並び替えると、最初の要素には値が割り当てられていないため null、2 番目の要素の値は 5 になります。

このメソッドを使用して、プリミティブ型、SelectOption 要素、sObject (標準オブジェクトとカスタムオブジェクト) を並び替えできます。sObject に使用される並び替え順についての詳細は、sObject のリストの並び替えを参照してください。カスタムデータ型 (Apex クラス) がComparable インターフェースを実装している場合は、カスタムデータ型も並び替えできます。

メモ

1List<Integer> q1 = new Integer[3];
2
3// Assign values to the first 
4// two elements
5q1[0] = 10;
6q1[1] = 5;
7
8q1.sort();
9// First element is null, second is 5
10system.assertEquals(q1.get(1), 5);