Java Comparator.comparing正序排序
时间: 2025-03-25 12:29:17 浏览: 39
### 如何使用 `Comparator.comparing` 方法实现正序排序
在 Java 中,可以利用 `Comparator.comparing` 方法来简化对象列表的排序逻辑。通过传递一个函数作为参数(通常是方法引用),它可以提取用于比较的关键字段并自动应用默认的自然顺序进行排序。
以下是基于站内引用的内容以及补充说明的一个完整示例:
#### 示例代码
```java
import java.util.*;
import java.util.stream.Collectors;
class Employee {
private String name;
private int age;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Employee{name='" + name + "', age=" + age + "}";
}
}
public class Main {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("Alice", 30),
new Employee("Bob", 25),
new Employee("Charlie", 35)
);
// 使用 Comparator.comparing 对员工按名字进行正序排序
List<Employee> sortedByName = employees.stream()
.sorted(Comparator.comparing(Employee::getName)) // 自然顺序 [^1]
.collect(Collectors.toList());
System.out.println("Sorted by Name:");
sortedByName.forEach(System.out::println);
// 使用 Comparator.comparing 对员工按年龄进行正序排序
List<Employee> sortedByAge = employees.stream()
.sorted(Comparator.comparing(Employee::getAge)) // 自然顺序
.collect(Collectors.toList());
System.out.println("Sorted by Age:");
sortedByAge.forEach(System.out::println);
}
}
```
#### 输出结果
假设输入数据如下:
```plaintext
Employee{name='Alice', age=30}
Employee{name='Bob', age=25}
Employee{name='Charlie', age=35}
```
运行上述程序后,输出将是:
```plaintext
Sorted by Name:
Employee{name='Alice', age=30}
Employee{name='Bob', age=25}
Employee{name='Charlie', age=35}
Sorted by Age:
Employee{name='Bob', age=25}
Employee{name='Alice', age=30}
Employee{name='Charlie', age=35}
```
#### 关键点解析
- **自然顺序**:当调用 `Comparator.comparing` 而不附加其他修饰符时,默认会按照所选属性的自然顺序排列。
- **链式操作**:如果需要进一步扩展排序规则,比如先按某个字段再按另一个字段排序,则可使用 `.thenComparing()` 链接多个条件[^3]。
---
阅读全文
相关推荐


















