添加可比接口并添加 compareTo() 方法

adding comparable interface and adding a compareTo() method

我在添加上面提到的两个时遇到了一些问题。我有两个 classes。员工和公司。

员工 class 保存了一些关于员工的信息,实例变量包括他们的姓名、日期、numOfSales 等。还有一些方法,如 setName、getName 等。

公司 class 创建了一个空列表。然后它有一个从文本文件中读取员工列表的方法 - 这就是列表如何被填满的方法。

我需要做的是:按他们的销量对列表进行排序。我首先需要修改员工 class 以便它实现 Comparable 接口。

public class Employee implements Comparable<Company>

我不确定是公司还是员工应该进去^ <>?但是当我尝试其中任何一个时,我收到错误消息“Employee 不是抽象的并且不会覆盖 java.lang.Comparable 中的抽象方法 CompareTo”我在这里做错了什么?我不能更改任何 classes,它们不能更改为摘要或任何内容,我不能添加任何新的。

然后我需要写一个compareTo()方法,我把它放在employee里面class?这将允许员工按其 numOfSales 实例变量存储的值的升序排序。

一个 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);
    }
}

如果您有某种 List<Employee> 您可以使用静态方法 Collections.sort() 对其进行排序,而无需在 Employee [=27= 上实现 Comparable 接口].您可以简单地使用接受 Comparator 对象的排序函数的变体,该对象将用于比较 Employee class.

的两个实例

而且您甚至不需要自己实施一个。您可以简单地使用 Comparator.comparingInt​(e -> e.numOfSales) 创建正确的 Comparator 来对您的列表进行排序。

所以

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

足以对您的员工列表进行排序。