使用Lambda表达式简化上述“Staff与Comparator接口”题目中的NameComparator,AgeComparator和ComplexComparator比较器。测试方法与上述相同。
时间: 2023-10-25 08:16:07 浏览: 136
好的,使用Lambda表达式可以大大简化比较器的编写。下面是三个使用Lambda表达式实现的比较器示例:
```java
Comparator<Staff> nameComparator = (s1, s2) -> s1.getName().compareTo(s2.getName());
Comparator<Staff> ageComparator = (s1, s2) -> s1.getAge() - s2.getAge();
Comparator<Staff> complexComparator = (s1, s2) -> {
int result = s1.getName().compareTo(s2.getName());
if (result == 0) {
result = s2.getAge() - s1.getAge();
}
return result;
};
```
可以看到,Lambda表达式的使用使得比较器的编写更加简洁明了。其中,`(s1, s2) -> s1.getName().compareTo(s2.getName())` 表示比较两个Staff对象的姓名;`(s1, s2) -> s1.getAge() - s2.getAge()` 表示比较两个Staff对象的年龄;`(s1, s2) -> {...}` 表示比较两个Staff对象的姓名和年龄,如果姓名相同,则按年龄降序排列。
阅读全文