Comparator List 逆序
时间: 2023-11-28 15:03:54 浏览: 23
如果你想要对一个List进行逆序排序,可以使用Comparator接口。Comparator接口是一个函数式接口,它允许你定义一个比较器来比较两个对象。在Java 8中,你可以使用lambda表达式来实现Comparator接口。下面是一个例子:
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(3);
list.add(1);
// 使用lambda表达式定义一个比较器
Comparator<Integer> comparator = (a, b) -> b - a;
// 使用Collections.sort方法进行排序
Collections.sort(list, comparator);
// 输出排序后的结果
System.out.println(list);
在这个例子中,我们首先创建了一个List,并向其中添加了三个整数。然后,我们使用lambda表达式定义了一个比较器,该比较器将两个整数进行比较,并返回它们的差值。最后,我们使用Collections.sort方法对List进行排序,并将结果输出到控制台上。
相关问题
comparator用法
Comparator是Java中的一个接口,用于定义对象之间的比较规则。它通常用于对集合中的元素进行排序或自定义排序。
Comparator接口中有一个抽象方法`compare(T obj1, T obj2)`,用于比较两个对象的大小关系。该方法返回一个整数值,表示obj1和obj2的比较结果:
- 如果返回值小于0,则表示obj1小于obj2。
- 如果返回值等于0,则表示obj1等于obj2。
- 如果返回值大于0,则表示obj1大于obj2。
Comparator接口还有一个默认方法`reversed()`,用于返回当前比较器的逆序比较器。
下面是一个使用Comparator进行排序的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Student {
private String name;
private int age;
// 构造方法、getter和setter省略
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
class AgeComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
}
public class ComparatorExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 18));
students.add(new Student("Charlie", 22));
// 使用AgeComparator对students进行排序
Collections.sort(students, new AgeComparator());
// 打印排序后的结果
for (Student student : students) {
System.
.stream()逆序
要将一个流(Stream)逆序,你可以使用`Stream`接口的`sorted`方法,并传递一个逆序的比较器(Comparator)作为参数。比较器可以通过`Comparator.reverseOrder()`方法来获取。下面是一个示例代码:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> reversedNumbers = numbers.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
System.out.println(reversedNumbers);
```
输出结果为:
```
[5, 4, 3, 2, 1]
```
在这个示例中,我们首先将整数列表转化为流,然后使用`sorted`方法对流进行排序,并传递`Comparator.reverseOrder()`作为比较器,以便进行逆序排序。最后使用`collect`方法将排序后的流转化为列表并输出结果。
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)