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

Comparable インターフェース

非プリミティブ型を含むリスト、つまりユーザ定義型のリストの並び替えのサポートを追加します。

名前空間

System

使用方法

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

Comparable インターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
1global class Employee implements Comparable {
次に、クラスで次のメソッドの実装を提供する必要があります。
1global 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 未満

Comparable の実装例

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