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

List クラス

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

名前空間

System

使用方法

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

1myList.clear();

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

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

List コンストラクタ

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

List<T>()

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)

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

署名

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)

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

署名

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

clear()

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

署名

public Void clear()

戻り値

型: 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)

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

署名

public List<Object> deepClone(Boolean preserveId, Boolean preserveReadonlyTimestamps, Boolean preserveAutonumber)

パラメータ

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

戻り値

型: List<Object>

使用方法

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

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

メモ

含まれる 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);
この例は上記の例に基づいて、保持された参照のみのタイムスタンプとユーザ ID 項目を使用してリストをコピーする方法を示します。
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)

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

署名

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()

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

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType

使用方法

このメソッドを 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());

hashCode()

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

署名

public Integer hashCode()

戻り値

型: Integer

isEmpty()

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

署名

public Boolean isEmpty()

戻り値

型: Boolean

iterator()

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

署名

public Iterator iterator()

戻り値

型: Iterator

使用方法

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

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

メモ

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

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));