リストの並べ替え
List.sort メソッドを使用して、リスト内の要素を並べ替えることができます。文字列型などのプリミティブデータ型の要素の場合、並べ替えは昇順です。より複雑な他のデータ型の並べ替え順序は、それらのデータ型に関する章で説明されています。
カスタムデータ型 (Apex クラス) が Comparable インターフェースを実装している場合は、カスタムデータ型を並べ替えできます。Comparator インターフェースを実装しているクラスをパラメーターとして List.sort メソッドに渡す方法もあります。sObject に使用される並べ替え順についての詳細は、「sObject のリストの並べ替え」を参照してください。
この例では、文字列のリストを並べ替える順番を示し、リスト内で色が昇順になっていることを確認します。
1List<String> colors = new List<String>{
2 'Yellow',
3 'Red',
4 'Green'};
5colors.sort();
6System.assertEquals('Green', colors.get(0));
7System.assertEquals('Red', colors.get(1));
8System.assertEquals('Yellow', colors.get(2));Visualforce SelectOption コントロールの場合、並べ替えは値項目と表示項目に基づく昇順になります。SelectOption で使用する比較ステップの順序については、次のセクションを参照してください。
SelectOption のデフォルトの並べ替え順
- 並べ替えには最初に値項目が使用されます。
- 2 つの値項目が同じ値の場合、または両方とも空の場合、表示ラベル項目が使用されます。
無効の項目は並べ替えには使用されません。
テキスト項目の場合、並べ替えアルゴリズムは Unicode 並べ替え順を使用します。また、空の項目は並べ替え順で空でない項目より前になります。
次の例では、リストに 3 つの SelectOption 要素が含まれています。United States と Mexico の 2 つの要素には同じ値項目 ('A') があります。List.sort メソッドは表示ラベル項目に基づいて 2 つの要素を並べ替え、出力に示されるように Mexico を United States より前に配置します。並べ替えられたリストの最後の要素は Canada で、その値項目 'C' は 'A' より後になるためこのように並べ替えられています。
1List<SelectOption> options = new List<SelectOption>();
2options.add(new SelectOption('A','United States'));
3options.add(new SelectOption('C','Canada'));
4options.add(new SelectOption('A','Mexico'));
5System.debug('Before sorting: ' + options);
6options.sort();
7System.debug('After sorting: ' + options);debug ステートメントの出力は、並べ替え前後のリストの内容を示しています。
1DEBUG|Before sorting: (System.SelectOption[value="A", label="United States", disabled="false"],
2 System.SelectOption[value="C", label="Canada", disabled="false"],
3 System.SelectOption[value="A", label="Mexico", disabled="false"])
4DEBUG|After sorting: (System.SelectOption[value="A", label="Mexico", disabled="false"],
5 System.SelectOption[value="A", label="United States", disabled="false"],
6 System.SelectOption[value="C", label="Canada", disabled="false"])