compare 接口怎么实现
时间: 2024-02-28 08:53:37 浏览: 21
`java.util.Comparator` 是一个函数式接口,它包含两个抽象方法:`compare(T o1, T o2)` 和 `equals(Object obj)`。其中,`compare(T o1, T o2)` 方法用于比较两个对象的大小关系,如果 `o1` 大于 `o2`,则返回正整数;如果 `o1` 小于 `o2`,则返回负整数;如果 `o1` 等于 `o2`,则返回0。
要实现 `Comparator` 接口,可以通过两种方式:
1. 实现 `Comparator` 接口,重写 `compare` 方法。
```java
class MyComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length(); // 按照字符串长度比较
}
}
```
2. 使用 lambda 表达式或方法引用创建一个 `Comparator` 对象。
```java
List<String> list = Arrays.asList("apple", "banana", "orange", "grape");
List<String> sortedList = list.stream()
.sorted((s1, s2) -> s1.length() - s2.length())
.collect(Collectors.toList());
```
这里的 `(s1, s2) -> s1.length() - s2.length()` 就是一个 lambda 表达式,它实现了 `Comparator` 接口中的 `compare` 方法。
无论采用哪种方式实现 `Comparator` 接口,最终都可以将其传递给 `sorted` 方法,用于对流中的元素进行排序。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)