Comparable インターフェース
名前空間
Comparable のメソッド
Comparable のメソッドは次のとおりです。
compareTo(objectToCompareTo)
比較の結果である integer 値を返します。
署名
public Integer compareTo(Object objectToCompareTo)
パラメータ
- objectToCompareTo
- 型: Object
戻り値
型: Integer
使用方法
このメソッドの実装では、次の値を返す必要があります。
- このインスタンスと objectToCompareTo が等しい場合は 0
- このインスタンスが objectToCompareTo より大きい場合は 1 以上
- このインスタンスが objectToCompareTo より小さい場合は 0 未満
Comparable の実装例
これは、Comparable インターフェースの実装例です。この例の compareTo メソッドは、このクラスインスタンスの従業員を引数で渡された従業員と比較します。メソッドは、従業員 ID の比較に基づいて integer 値を返します。
1global 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 global 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 static testmethod void test1() {
4 List<Employee> empList = new List<Employee>();
5 empList.add(new Employee(101,'Joe Smith', '4155551212'));
6 empList.add(new Employee(101,'J. Smith', '4155551212'));
7 empList.add(new Employee(25,'Caragh Smith', '4155551000'));
8 empList.add(new Employee(105,'Mario Ruiz', '4155551099'));
9
10 // Sort using the custom compareTo() method
11 empList.sort();
12
13 // Write list contents to the debug log
14 System.debug(empList);
15
16 // Verify list sort order.
17 System.assertEquals('Caragh Smith', empList[0].Name);
18 System.assertEquals('Joe Smith', empList[1].Name);
19 System.assertEquals('J. Smith', empList[2].Name);
20 System.assertEquals('Mario Ruiz', empList[3].Name);
21 }
22}