添加可比接口并添加 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));
足以对您的员工列表进行排序。
我在添加上面提到的两个时遇到了一些问题。我有两个 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));
足以对您的员工列表进行排序。