java中Comparator.comparingLong(::)简写方式
时间: 2023-11-11 08:57:47 浏览: 229
在Java中,可以使用静态导入和方法引用的方式来简写Comparator.comparingLong(::)。具体如下所示:
import static java.util.Comparator.*;
...
Arrays.sort(numbers, comparingLong(Long::valueOf));
相关问题
Comparator.comparingLong和Comparator.comparing的区别
Comparator.comparingLong和Comparator.comparing是Java中的两个用于比较器构造的静态方法。它们的区别在于比较的类型不同。
Comparator.comparingLong是用于比较long类型的方法。它接受一个Function参数,该参数将元素映射为long类型的值,然后根据这些值进行比较。比较器将按照升序排列元素。
示例代码如下:
```java
List<Long> numbers = Arrays.asList(3L, 1L, 2L, 5L, 4L);
numbers.sort(Comparator.comparingLong(number -> number));
System.out.println(numbers); // 输出 [1, 2, 3, 4, 5]
```
Comparator.comparing是用于比较任意类型的方法。它接受一个Function参数,该参数将元素映射为可比较的类型,然后根据这些值进行比较。比较器将按照升序排列元素。
示例代码如下:
```java
List<String> names = Arrays.asList("John", "Alice", "Bob", "David");
names.sort(Comparator.comparing(name -> name));
System.out.println(names); // 输出 [Alice, Bob, David, John]
```
总之,Comparator.comparingLong适用于long类型的比较,而Comparator.comparing适用于其他类型的比较。
Comparator.comparingLong
Comparator.comparingLong是Java中的一个静态方法,用于创建一个基于长整型属性的比较器。它接受一个函数作为参数,该函数将对象映射到一个长整型值,然后返回一个比较器对象。
以下是一个使用Comparator.comparingLong的示例:
```java
import java.util.Comparator;
public class User {
private String name;
private long id;
public User(String name, long id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public long getId() {
return id;
}
public static void main(String[] args) {
User user1 = new User("Alice", 123);
User user2 = new User("Bob", 456);
Comparator<User> idComparator = Comparator.comparingLong(User::getId);
int result = idComparator.compare(user1, user2);
if (result < 0) {
System.out.println(user1.getName() + " comes before " + user2.getName());
} else if (result > 0) {
System.out.println(user1.getName() + " comes after " + user2.getName());
} else {
System.out.println(user1.getName() + " and " + user2.getName() + " are equal");
}
}
}
```
输出结果将根据用户的id进行比较,并打印出相应的结果。
阅读全文