针对实验4编写的Staff类,分别编写NameComparator,AgeComparator和ComplexComparator比较器。其中ComplexComparator为复合比较器,至少选用两个关键字来排序,关键字选择、次序及升降序均由同学们自行设计。
时间: 2024-01-13 15:07:54 浏览: 91
好的,我可以帮你解答这个问题。下面是三个比较器的实现:
1. NameComparator比较器
```java
import java.util.Comparator;
public class NameComparator implements Comparator<Staff> {
@Override
public int compare(Staff s1, Staff s2) {
return s1.getName().compareTo(s2.getName());
}
}
```
2. AgeComparator比较器
```java
import java.util.Comparator;
public class AgeComparator implements Comparator<Staff> {
@Override
public int compare(Staff s1, Staff s2) {
return s1.getAge() - s2.getAge();
}
}
```
3. ComplexComparator比较器
```java
import java.util.Comparator;
public class ComplexComparator implements Comparator<Staff> {
@Override
public int compare(Staff s1, Staff s2) {
int result = s1.getDepartment().compareTo(s2.getDepartment());
if (result == 0) {
result = s2.getSalary() - s1.getSalary();
}
return result;
}
}
```
在ComplexComparator比较器中,首先按照部门名称进行排序,如果部门名称相同,则按照工资从高到低排序。这里我们假设工资是int类型的。
希望这个回答能够帮到你!
阅读全文