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

List クラス

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

名前空間

System

使用方法

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

1myList.clear();

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

  • リスト要素にカスタムデータ型を使用する場合、クラスで equals メソッドを提供します。Apex はこのメソッドを使用して、オブジェクトの等価と一意性を判断します。equals メソッドの提供についての詳細は、「対応付けのキーとセットでのカスタムデータ型の使用」を参照してください。
  • リストに String 要素が含まれる場合、要素では大文字と小文字が区別されます。大文字と小文字のみが異なる 2 つのリスト要素は、別個のものとみなされます。

メモ

List についての詳細は、「リスト」を参照してください。

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
7Assert.isTrue(ls.contains(2));
8Assert.isTrue(ls.contains(1));

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

contains(listElement)

リストに指定した要素が存在する場合、true を返します。

署名

public Boolean contains(Object listElement)

パラメーター

listElement
型: Object

戻り値

型: Boolean

1List<String> myStrings = new List<String>{'a', 'b'};
2Boolean result = myStrings.contains('z');
3System.assertEquals(false, result);

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

indexOf(listElement)

このリストの指定した要素が最初に発生したインデックスを返します。このリストに要素が含まれていない場合、-1 を返します。

署名

public Integer indexOf(Object listElement)

パラメーター

listElement
型: Object

戻り値

型: Integer

1List<String> myStrings = new List<String>{'a', 'b', 'a'};
2Integer result = myStrings.indexOf('a');
3System.assertEquals(0, result);

isEmpty()

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

署名

public Boolean isEmpty()

戻り値

型: Boolean

iterator()

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

署名

public Iterator iterator()

戻り値

型: Iterator

使用方法

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

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

メモ

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

1public class CustomIterator
2   implements Iterator<Account>{ 
3 
4   private List<Account> accounts;
5   private Integer currentIndex;
6 
7   public CustomIterator(List<Account> accounts){
8       this.accounts = accounts;
9       this.currentIndex = 0;
10   }
11 
12   public Boolean hasNext(){ 
13       return currentIndex < accounts.size();
14   }    
15 
16   public Account next(){
17       if(hasNext()) {
18           return accounts[currentIndex++];
19       } else {
20           throw new NoSuchElementException('Iterator has no more elements.');
21       }
22   } 
23}

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 インターフェースを実装している場合は、カスタムデータ型を並べ替えできます。Comparator インターフェースを実装しているクラスをパラメーターとして List.sort メソッドに渡す方法もあります。

15 文字の ID と 18 文字の ID の両方を含む List<Id>ssort() メソッドを使用する場合、API バージョン 35.0 以降では同じレコードの ID がまとめて並べ替えられます。

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

1List<Integer> q1 = new Integer[3];
2
3 
4
5// Assign values to the first two elements.
6
7q1[0] = 10;
8
9q1[1] = 5;
10
11 
12
13q1.sort();
14
15// Verify sorted list. Elements are sorted in nulls-first order: null, 5, and 10
16
17system.assertEquals(null, q1.get(0));
18
19system.assertEquals(5, q1.get(1));
20
21system.assertEquals(10, q1.get(2));

toString()

リストの文字列表現を返します。

署名

public String toString()

戻り値

型: String

使用方法

循環参照で使用する場合、出力は無限再帰を防ぐために切り捨てられます。大きなコレクションに使用する場合、合計ヒープサイズと最大 CPU 時間を超えないように出力が切り捨てられます。
  • コレクションごとに最大 10 項目が出力に含まれ、その後に省略記号 (…) が続きます。
  • 同じオブジェクトがコレクションに複数回含まれている場合、そのオブジェクトは出力に 1 回のみ表示されます。後続の参照は (already output) と表示されます。