如何在 Java 8 中使用带方法引用的 Comparator 对列表进行排序?
Java 8 在 Comparator 接口中引入了更改,该接口允许我们比较两个对象。这些更改有助于我们更轻松地创建比较器。添加的第一个重要方法是 comparing() 方法。此方法接收一个作为参数的 Function ,用于确定要比较的值,并创建 Comparator。另一个重要方法是 thenComparing() 方法。此方法可用于组合 Comparator。
在下面的示例中,我们可以使用 comparing() 方法按姓氏对列表进行排序,然后使用 Comparator 接口的 thenComparing() 方法按名进行排序。
示例
import java.util.*;
public class MethodReferenceSortTest {
public static void main(String[] args) {
List<Employee> emp = new ArrayList<Employee>();
emp.add(new Employee(25, "Raja", "Ramesh"));
emp.add(new Employee(30, "Sai", "Adithya"));
emp.add(new Employee(28, "Jai", "Dev"));
emp.add(new Employee(23, "Ravi", "Chandra"));
emp.add(new Employee(35, "Chaitanya", "Krishna"));
// using method reference
emp.stream().sorted(Comparator.comparing(Employee::getFirstName)
.thenComparing(Employee::getLastName))
.forEach(System.out::println);
}
}
// Employee class
class Employee {
int age;
String firstName;
String lastName;
public Employee(int age, String firstName, String lastName) {
super();
this.age = age;
this.firstName = firstName;
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [age=" + age + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}输出
Employee [age=35, firstName=Chaitanya, lastName=Krishna] Employee [age=28, firstName=Jai, lastName=Dev] Employee [age=25, firstName=Raja, lastName=Ramesh] Employee [age=23, firstName=Ravi, lastName=Chandra] Employee [age=30, firstName=Sai, lastName=Adithya]
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP