Java 8 Lambda 表达式比较器使用示例代码
Java 8 Lambda 表达式比较器使用示例代码主要介绍了如何使用 Java 8 Lambda 表达式编写一个 Comparator 来对 List 进行排序。下面将详细说明 Lambda 表达式比较器的使用方法和示例代码。
Lambda 表达式比较器的优点
使用 Lambda 表达式可以简化 Comparator 的编写,使代码更加简洁易读。相比于传统的匿名 Comparator 类,Lambda 表达式更加简洁和灵活。
经典的比较器示例
在 Java 8 之前,我们通常使用匿名 Comparator 类来实现比较器,例如:
Comparator<Developer> byName = new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
return o1.getName().compareTo(o2.getName());
}
};
使用 Lambda 表达式可以简化上面的代码,变为:
Comparator<Developer> byName = (Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
Lambda 表达式比较器的使用方法
下面是一个使用 Lambda 表达式比较器的示例代码:
```java
public class TestSorting {
public static void main(String[] args) {
List<Developer> listDevs = getDevelopers();
System.out.println("Before Sort");
for (Developer developer : listDevs) {
System.out.println(developer.toString());
}
//sort by age
Collections.sort(listDevs, (Developer o1, Developer o2) -> o1.getAge() - o2.getAge());
System.out.println("After Sort");
for (Developer developer : listDevs) {
System.out.println(developer);
}
}
public static List<Developer> getDevelopers() {
List<Developer> developers = new ArrayList<>();
developers.add(new Developer("lisi", new BigDecimal("8000"), 23));
developers.add(new Developer("wangwu", new BigDecimal("9000"), 24));
developers.add(new Developer("maliu", new BigDecimal("10000"), 25));
developers.add(new Developer("zhangsan", new BigDecimal("7000"), 22));
return developers;
}
}
```
在上面的代码中,我们使用 Lambda 表达式 `(Developer o1, Developer o2) -> o1.getAge() - o2.getAge()` 来实现年龄的排序。
Lambda 表达式比较器的优点
使用 Lambda 表达式比较器有以下几个优点:
* 代码简洁易读
*灵活性强,可以根据需要快速更换比较器
* 可以减少代码的重复
Java 8 Lambda 表达式比较器使用示例代码可以帮助开发者快速实现列表的排序操作,并且代码简洁易读、灵活性强。