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

Comparable インターフェース

非プリミティブ型を含むリスト、つまりユーザー定義型のリストの並べ替えのサポートを追加します。実装では、null ポインター例外を回避するために、compareTo() メソッドで明示的に null 入力を処理する必要があります。

名前空間

System

使用方法

Apex クラスのリスト並べ替えのサポートを追加するには、Comparable インターフェースを、その compareTo メソッドと共にクラスに実装する必要があります。

Comparable インターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
1public class Employee implements Comparable {
次に、クラスで次のメソッドの実装を提供する必要があります。
1public Integer compareTo(Object compareTo) {
2    // Your code here
3}

実装されたメソッドは global または public として宣言する必要があります。

Comparable のメソッド

Comparable のメソッドは次のとおりです。

compareTo(objectToCompareTo)

比較の結果である integer 値を返します。

署名

public Integer compareTo(Object objectToCompareTo)

パラメーター

objectToCompareTo
型: Object

戻り値

型: Integer

使用方法

このメソッドの実装は、次の値を返します。

  • このインスタンスと objectToCompareTo が等しい場合は 0
  • このインスタンスが objectToCompareTo より大きい場合は 1 以上
  • このインスタンスが objectToCompareTo より小さい場合は 0 未満

このオブジェクトインスタンスと objectToCompareTo が一致しない場合、System.TypeException が発生します。

Comparable の実装例

次の例では、Comparable インターフェースを実装します。この例の compareTo メソッドは、このクラスインスタンスの従業員を引数で渡された従業員と比較します。メソッドは、従業員 ID の比較に基づいて integer 値を返します。
1public class Employee implements Comparable {
2
3    public Long id;
4    public String name;
5    public String phone;
6    
7    // Constructor
8    public Employee(Long i, String n, String p) {
9        id = i;
10        name = n;
11        phone = p;
12    }
13    
14    // Implement the compareTo() method
15    public Integer compareTo(Object compareTo) {
16        Employee compareToEmp = (Employee)compareTo;
17        if (id == compareToEmp.id) return 0;
18        if (id > compareToEmp.id) return 1;
19        return -1;        
20    }
21}
この例では、Employee オブジェクトのリストの並べ替え順をテストします。
1@isTest
2private class EmployeeSortingTest {
3    @isTest
4    static void test1() {
5        List<Employee> empList = new List<Employee>();
6        empList.add(new Employee(101,'Joe Smith', '4155551212'));
7        empList.add(new Employee(101,'J. Smith', '4155551212'));
8        empList.add(new Employee(25,'Caragh Smith', '4155551000'));
9        empList.add(new Employee(105,'Mario Ruiz', '4155551099'));
10        
11        // Sort using the custom compareTo() method
12        empList.sort();
13        
14        // Write list contents to the debug log
15        System.debug(empList);
16        
17        // Verify list sort order.
18        Assert.areEqual('Caragh Smith', empList[0].Name);
19        Assert.areEqual('Joe Smith', empList[1].Name); 
20        Assert.areEqual('J. Smith', empList[2].Name);
21        Assert.areEqual('Mario Ruiz', empList[3].Name);
22    }
23}