To add List sorting support for your Apex class, you must implement the Comparable interface with its compareTo method in your class.
global class Employee implements Comparable {
global Integer compareTo(Object compareTo) { // Your code here }
The implemented method must be declared as global or public.
The following are methods for Comparable.
public Integer compareTo(Object objectToCompareTo)
Type: Integer
The implementation of this method should return the following values:
global class Employee implements Comparable { public Long id; public String name; public String phone; // Constructor public Employee(Long i, String n, String p) { id = i; name = n; phone = p; } // Implement the compareTo() method global Integer compareTo(Object compareTo) { Employee compareToEmp = (Employee)compareTo; if (id == compareToEmp.id) return 0; if (id > compareToEmp.id) return 1; return -1; } }
@isTest private class EmployeeSortingTest { static testmethod void test1() { List<Employee> empList = new List<Employee>(); empList.add(new Employee(101,'Joe Smith', '4155551212')); empList.add(new Employee(101,'J. Smith', '4155551212')); empList.add(new Employee(25,'Caragh Smith', '4155551000')); empList.add(new Employee(105,'Mario Ruiz', '4155551099')); // Sort using the custom compareTo() method empList.sort(); // Write list contents to the debug log System.debug(empList); // Verify list sort order. System.assertEquals('Caragh Smith', empList[0].Name); System.assertEquals('Joe Smith', empList[1].Name); System.assertEquals('J. Smith', empList[2].Name); System.assertEquals('Mario Ruiz', empList[3].Name); } }