java.util.stream.Stream#sorted(java.util.Comparator<? super T>) 如何定义正序和倒序
时间: 2023-12-19 17:03:47 浏览: 31
java.util.stream.Stream#sorted(java.util.Comparator<? super T>)方法可以接收一个Comparator对象作为参数,用于比较Stream中的元素的大小关系。我们可以通过实现Comparator接口来定义自己的比较器,从而实现正序或倒序排列。
如果我们希望按照元素的自然顺序进行排序,可以使用元素本身的compareTo()方法。例如,对于一个List<Integer>对象list,我们可以使用以下代码对其进行排序:
```
List<Integer> sortedList = list.stream()
.sorted()
.collect(Collectors.toList());
```
在上述代码中,我们没有传递Comparator对象,因此会使用元素自身的compareTo()方法进行比较,从而按照元素的自然顺序进行排序。
如果我们希望按照元素的降序排列,可以在Comparator对象的compare()方法中返回负数。例如,对于一个List<Integer>对象list,我们可以使用以下代码对其进行降序排列:
```
List<Integer> sortedList = list.stream()
.sorted((i1, i2) -> i2.compareTo(i1))
.collect(Collectors.toList());
```
在上述代码中,我们传递了一个Comparator对象,该对象使用i2.compareTo(i1)比较元素的大小关系,从而实现了降序排列。