На этом шаге мы приведем пример использования интерфейса Comparable
Приведем ниже пример сортировки массива, состоящего из объектов класса Employee.
Исходный код класса EmployeeSortTest
import java.util.Arrays; /** * <p>Класс EmployeeSortTest для тестирования программы</p> * */ public class EmployeeSortTest { public static void main(String[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Employee1", 10000); staff[1] = new Employee("Employee2", 40000); staff[2] = new Employee("Employee3", 30000); Arrays.sort(staff); for (Employee employee : staff) { System.out.println("name = " + employee.getName() + ", salary = " + employee.getSalary()); } } }
Исходный код класса Employee
/** * <p>Класс Employee реализует интерфейс Comparable<Employee></p> * */ public class Employee implements Comparable{ private String name; private double salary; /** * <p>Конструктор класса Employee</p> * @param name Имя сотрудника * @param salary Зарплата сотрудника * */ public Employee(String name, double salary) { this.name = name; this.salary = salary; } /** * <p>Функция для получения имени сотрудника</p> * @return Имя сотрудника * */ public String getName() { return name; } /** * <p>Функция для получения зарплаты сотрудника</p> * @return Зарплата сотрудника * */ public double getSalary() { return salary; } /** * <p>Функция для увеличения заработной платы сотрудника * на заданое количество процентов</p> * @param byPercent Количество процентов * */ public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } /** * <p>Функция из интерфейса Comparable.</p> * <p>Сравнивает два объекта класса Employee.</p> * @return -1, если o.salary > salary. 0, если o.salary = salary. * 1, если o.salary < salary * */ @Override public int compareTo(Employee o) { return Double.compare(salary, o.salary); } }
Проект можно взять здесь
Рис. 1. Вывод программы
На следующем шаге мы рассмотрим свойства интерфейсов