добавление сопоставимого интерфейса и добавление метода CompareTo () - PullRequest
1 голос
/ 14 апреля 2020

У меня возникли проблемы с добавлением двух, упомянутых выше. У меня есть два класса. Сотрудник и компания.

Класс сотрудника содержит некоторую информацию о сотрудниках, переменные экземпляра, включая их имена, даты, numOfSales et c et c. А также некоторые методы, такие как setName, getName и т. Д.

Класс Company создает пустой список. Затем у него есть метод, который считывает список сотрудников из текстового файла - и тогда список заполняется.

Что мне нужно сделать, это: отсортировать список по их numOfSales. Прежде всего, мне нужно изменить класс сотрудников, чтобы он реализовывал интерфейс Comparable.

public class Employee implements Comparable<Company>

Я не уверен, должна ли компания или сотрудник go там ^ <>? Но когда я пытаюсь либо, я получаю сообщение об ошибке, что ' Сотрудник не является абстрактным и не переопределяет абстрактный метод CompareTo в java .lang.Comparable ' Что я здесь не так делаю? Я не должен изменять ни один из классов, они не должны быть изменены на абстрактные или что-либо еще, и я не должен добавлять какие-либо новые.

Затем мне нужно написать метод compareTo (), я принимаю его в сотруднике. учебный класс? это позволит сортировать сотрудников в порядке возрастания значения, хранящегося в их переменной экземпляра numOfSales.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Если у вас есть некоторый вид List<Employee>, вы можете использовать метод

stati c, чтобы отсортировать его без реализации интерфейса Comparable в классе Employee. Вы можете просто использовать вариант функции сортировки, который принимает объект Comparator, который будет использоваться для сравнения двух экземпляров класса Employee. *1007*

И вам даже не нужно реализовывать его на своем своя. Вы можете просто использовать Comparator.comparingInt​(e -> e.numOfSales) для создания правильного Comparator для сортировки списка.

Так что

Collections.sort(employees, Comparator.comparingInt​(e -> e.numOfSales));

будет достаточно для сортировки списка сотрудников.

2 голосов
/ 14 апреля 2020

Employee должно быть сравнимо с другими Employee с, так что это Comparable<Employee>. Затем вам нужно реализовать метод compareTo, поскольку в сообщении об ошибке говорится:

public class Employee implements Comparable<Employee> {
    private int numOfSales;
    // other data members

    // Constructors, getters, setters, etc

    @Override
    public int compareTo(Employee e) {
        return Integer.compare(numOfSales, e.numOfSales);
    }
}
...