Java8 array多字段排序
时间: 2025-06-29 13:04:23 浏览: 0
### Java 8 数组多字段排序方法
在 Java 8 中,可以利用 `Comparator` 接口的新特性以及 lambda 表达式来实现数组或多维对象列表的多字段排序。下面是一个具体的例子展示如何对包含多个属性的对象数组进行排序。
假设有一个表示员工信息的数据结构:
```java
class Employee {
private String name;
private int age;
private double salary;
// Constructors, getters and setters...
}
```
为了按照年龄升序排列再按薪水降序排列这样的复杂条件对员工列表进行排序,可采用如下方式:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("John", 30, 7500),
new Employee("Jane", 29, 8000),
new Employee("Jim", 30, 6000)
);
List<Employee> sortedEmployees = employees.stream()
.sorted(Comparator.comparing(Employee::getAge).thenComparing((a, b) -> Double.compare(b.getSalary(), a.getSalary())))
.collect(Collectors.toList());
sortedEmployees.forEach(System.out::println);
}
}
```
这段代码首先创建了一个 `Employee` 对象的集合,接着通过流操作对其进行排序。这里使用了 `Comparator.comparing()` 方法指定主要排序键(即年龄),并链式调用了 `thenComparing()` 来定义次要排序逻辑——基于薪资做逆向比较[^1]。
对于基本类型的数组来说,如果想要执行类似的多字段排序,则通常会先将其转换成更复杂的结构体形式,比如封装到类实例中去处理;或者当数据量不大时也可以考虑直接遍历数组构建新的有序序列。
阅读全文
相关推荐


















