java8写一个按n个key进行排序的共通方法
时间: 2024-05-14 11:14:48 浏览: 15
以下是一个示例的Java 8代码,用于按照给定的n个键对对象进行排序:
```
public static <T> List<T> sortObjects(List<T> objects, Comparator<T>... comparators) {
Comparator<T> compositeComparator = null;
for (Comparator<T> comparator : comparators) {
if (compositeComparator == null) {
compositeComparator = comparator;
} else {
compositeComparator = compositeComparator.thenComparing(comparator);
}
}
return objects.stream().sorted(compositeComparator).collect(Collectors.toList());
}
```
这个方法接受一个对象列表和一个或多个比较器。该方法将比较器组合成一个复合比较器,然后使用Java 8的流API对对象列表进行排序。最后,该方法返回已排序的对象列表。
以下是如何使用上述方法的示例代码:
```
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20),
new Person("Dave", 25)
);
List<Person> sortedPeople = sortObjects(people,
Comparator.comparing(Person::getAge),
Comparator.comparing(Person::getName));
```
在这个例子中,我们使用`sortObjects()`方法按照年龄和姓名对`Person`对象列表进行排序。我们使用Java 8的方法引用语法来获取`Person`对象的年龄和姓名。