comparator.comparing
时间: 2023-05-01 14:01:01 浏览: 145
`comparator.comparing` 是 Java 8 中用于创建比较器的工厂方法。它返回一个 `Comparator` 接口的实例,该实例按照给定的键比较两个对象。键通常是对象中的某个字段。 例如:
```
List<Person> people = ...;
people.sort(Comparator.comparing(Person::getLastName));
```
上面的代码将人员列表按照姓氏排序
相关问题
Comparator.comparing
`Comparator.comparing`是Java 8中`Comparator`接口提供的一个静态方法,它可以根据指定的函数对对象进行比较,并返回一个比较器对象。
通常情况下,我们需要对对象的某个属性进行比较,这时我们可以使用`Comparator.comparing`方法。该方法接受一个函数作为参数,该函数用于从对象中提取需要比较的属性,然后返回一个比较器对象。
例如,如果我们有一个`Person`类,它有一个`age`字段,我们想要根据`age`字段对`Person`对象进行比较,可以使用`Comparator.comparing`方法,如下所示:
```
List<Person> persons = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 20),
new Person("Charlie", 30)
);
persons.sort(Comparator.comparing(Person::getAge));
// 输出排序结果
persons.forEach(System.out::println);
```
在上面的代码中,我们首先创建了一个包含三个`Person`对象的列表。然后,我们使用`Comparator.comparing`方法创建一个比较器对象,该对象根据`getAge()`方法返回的值对`Person`对象进行比较。最后,我们调用`List.sort`方法,使用该比较器对列表进行排序,并将结果输出。
需要注意的是,如果需要按照多个属性进行比较,可以使用`thenComparing`方法来构造一个复合比较器。例如,如果我们想要根据`age`和`name`两个属性对`Person`对象进行比较,可以使用以下代码:
```
persons.sort(Comparator.comparing(Person::getAge).thenComparing(Person::getName));
```
Comparator.comparing 倒序
`Comparator.comparing()` 是Java 8及后续版本中用于创建比较器的方法,它允许你通过函数式编程的方式指定比较的关键字。当你想要得到倒序排列的结果时,通常会结合 `Comparator.reverseOrder()`。
例如,如果你想根据 `Map<String, Integer>` 中的数值大小进行降序排序,可以这样做:
```java
import java.util.*;
List<Map<String, Integer>> maps = ... // 要排序的map列表
Comparator<Map<String, Integer>> naturalComparator = Comparator.comparingInt(
map -> (int) map.get("value") // 假设 "value" 是你想使用的键
);
Comparator<Map<String, Integer>> reverseComparator = naturalComparator.reversed();
Collections.sort(maps, reverseComparator);
```
这将导致 `maps` 列表按 "value" 的降序进行排序。
阅读全文
相关推荐










