Comparator.comparing是什么?
时间: 2023-07-03 08:05:14 浏览: 59
Comparator.comparing是Java 8中的一个静态方法,它允许我们根据对象的某个属性进行比较。比较器接口Comparator定义了一个用于比较两个对象的方法。comparing方法允许我们根据一个对象的某个属性来创建一个比较器。具体来说,该方法需要一个Function类型的参数,该参数用于从对象中提取要比较的属性,并返回一个Comparable对象。下面是一个使用comparing方法的示例:
```
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Adam", 23), new Person("Eve", 27));
Collections.sort(people, Comparator.comparing(Person::getAge));
```
在上面的例子中,我们首先创建了一个Person类的对象列表。然后,我们使用comparing方法以Person对象的年龄为依据创建了一个比较器,并将其传递给Collections.sort方法,以便按年龄对人员进行排序。
相关问题
Comparator.comparing是干什么的
Comparator.comparing是Java中的一个静态方法,用于创建一个比较器(Comparator)。它允许我们根据对象的某个属性进行排序。
使用Comparator.comparing方法,我们可以通过提取对象的属性来创建一个比较器。比较器可以用于对对象进行排序,以便按照指定的规则进行比较和排序。
Comparator.comparing方法有多个重载形式,可以根据需要选择不同的比较方式。比如,可以使用Comparator.comparingInt、Comparator.comparingLong和Comparator.comparingDouble来比较基本数据类型的属性。
下面是一个使用Comparator.comparing方法的示例:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
// 按照年龄升序排序
people.sort(Comparator.comparing(Person::getAge));
// 输出排序结果
for (Person person : people) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
```
运行以上代码,输出结果为:
```
Charlie - 20
Alice - 25
Bob - 30
```
这个例子中,我们使用Comparator.comparing方法创建了一个比较器,按照人的年龄进行排序。通过调用List的sort方法,我们可以对人的列表进行排序,并按照指定的规则输出排序结果。
Comparator.comparing可以比较Long吗?
是的,Comparator.comparing方法可以用于比较Long类型的值。虽然它的命名中没有明确指定Long类型,但它实际上可以接受任何类型的参数,只要该类型实现了Comparable接口或提供了自定义比较器。
当你使用Comparator.comparing方法比较Long类型的值时,它会使用Long类的自然排序(按照数值大小)进行比较。下面是一个示例代码:
```java
List<Long> numbers = Arrays.asList(3L, 1L, 2L, 5L, 4L);
numbers.sort(Comparator.comparing(number -> number));
System.out.println(numbers); // 输出 [1, 2, 3, 4, 5]
```
在上述代码中,我们将Long类型的数字列表进行排序,并使用Comparator.comparing方法来比较Long类型的值。排序结果按照数字的大小进行升序排列。
所以,尽管Comparator.comparing没有明确指定Long类型,但它确实可以用于比较Long类型的值。