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

我在添加上述两个方面有些麻烦。我有两节课。员工和公司。

employee类包含有关雇员的信息,实例变量,包括其姓名,日期,numOfSales等。还有一些方法,如setName,getName等。

Company类创建一个空列表。然后,它提供了一种从文本文件中读取员工列表的方法-然后便是如何填充列表的方法。

我需要做的是:按列表的numOfSales排序。首先,我需要修改employee类,以便它实现Comparable接口。

public class Employee implements Comparable<Company>

我不确定公司或员工是否应该去那里^ ?但是当我尝试任何一种方法时,都会收到错误消息“ Employee不是抽象的,并且没有覆盖java.lang.Comparable 中的抽象方法CompareTo”,这是我在做什么错?我不得更改任何类,不得将其更改为抽象类或任何其他内容,也不得添加任何新类。

然后我需要编写一个compareTo()方法,我将它带入employee类吗?这将使员工可以按其numOfSales实例变量存储的值的升序进行排序。

f123engyu 回答:添加可比较的接口并添加compareTo()方法

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()对其进行排序,而无需在Comparable类上实现Employee接口。您可以简单地使用sort函数的变体,该变体接受Comparator对象,该对象将用于比较Employee类的两个实例。

您甚至不需要自己实现一个。您只需使用Comparator.comparingInt​(e -> e.numOfSales)来创建正确的Comparator即可对列表进行排序。

所以

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

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

本文链接:https://www.f2er.com/2445827.html

大家都在问