Comparator comparing
时间: 2023-10-13 13:18:27 浏览: 92
`Comparator.comparing` 是 Java 8 中 `Comparator` 接口提供的一个静态方法,用于创建一个比较器。该方法接受一个 `Function` 类型的参数,表示将对象转换为需要比较的属性,返回一个新的比较器。
比如,如果要按照人的年龄进行排序,可以这样写:
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 18),
new Person("Charlie", 30)
);
persons.sort(Comparator.comparing(Person::getAge));
```
这里的 `Person` 类有一个 `getAge` 方法返回年龄,`Comparator.comparing(Person::getAge)` 将 `Person` 对象转换为其年龄属性,并返回一个比较器。`persons.sort` 方法将列表按照该比较器进行排序。
另外,`Comparator.comparing` 还有一个重载方法,可以接受一个可选的第二个参数 `nullsFirst` 或 `nullsLast`,用于指定在比较时如何处理 `null` 值。例如:
```java
persons.sort(Comparator.comparing(Person::getName, Comparator.nullsLast(String::compareTo)));
```
这里指定了如果姓名为 `null` 的人放在列表的最后面。
阅读全文