假设我有一个包含对象的数组,其中有一些员工(对象)。他们都有:int age
, double salary
。我想对这个数组进行排序,以便我的类实现Comparable <Employee>
。我做了一个方法:
public int compareTo(Employee other) {
return Double.compare(salary, other.salary);
}
没关系,排序工作正常。但我正在排序double salary
。现在我想排序int age
所以现在怎么办?我做了一个方法:
public int compareAge(Employee other) {
return Integer.compare(age, other.age);
}
我该如何使用Arrays.sort()
有了这个?我希望能够使用这两种方法 - 按薪水排序,按年龄排序。谢谢你的帮助。
实现对集合进行多种排序的方法Employee
参考,你应该创建单独的类来实现Comparator<Employee>
。所以你可能有:
public class EmployeeAgeComparator implements Comparator<Employee> {
...
}
public class EmployeeSalaryComparator implements Comparator<Employee> {
...
}
然后您只需将适当比较器的实例传递到Arrays.sort
method.
基本上,实施Comparable
当存在一种合理的默认排序顺序时,这是很好的 - 但比较器允许您将“正在比较的事物”与“进行比较的事物”分开。
作为旁注,使用double
表示货币值(如工资)是一个坏主意,因为二进制浮点的工作方式(例如无法准确表示 0.1)...使用BigDecimal
,或存储整数分(或您使用的任何货币单位)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)