java .stream().sorted对象排序
时间: 2023-11-21 21:56:29 浏览: 96
Java中的Stream API提供了一种非常方便的方式来对集合中的元素进行排序。可以使用sorted()方法来对流中的元素进行排序。下面是一个简单的例子:
假设我们有一个字符串列表,我们想按字母顺序对它们进行排序,可以使用以下代码:
```java
List<String> list = Arrays.asList("c", "a", "b");
List<String> sortedList = list.stream().sorted().collect(Collectors.toList());
System.out.println(sortedList); // 输出:[a, b, c]
```
在这个例子中,我们首先将字符串列表转换为流,然后使用sorted()方法对流中的元素进行排序,最后使用collect()方法将排序后的元素收集到一个新的列表中。
需要注意的是,sorted()方法返回一个新的排序后的流,而不是对原始流进行排序。
相关问题
java.util.stream.Stream#sorted(java.util.Comparator<? super T>)
java.util.stream.Stream#sorted(java.util.Comparator<? super T>)是Java 8中Stream API提供的一个方法,用于对Stream中的元素进行自定义排序。该方法接收一个Comparator对象作为参数,用于比较Stream中的元素的大小关系。在排序完成后,该方法返回一个新的Stream对象,该对象包含排序后的元素。需要注意的是,该方法不会改变原有的Stream对象,而是生成一个新的Stream对象。
例如,假设有一个List<String>对象list,我们可以通过以下代码对其进行排序:
```
List<String> sortedList = list.stream()
.sorted((s1, s2) -> s1.compareTo(s2))
.collect(Collectors.toList());
```
在上面的代码中,我们首先将list转化为Stream对象,然后使用sorted方法对其进行排序,该方法接收一个Comparator对象,使用Lambda表达式实现字符串的比较。最后通过collect方法将排序后的结果保存到一个新的List中。
java.util.stream.Stream#sorted(java.util.Comparator<? super T>) 如何定义正序和倒序
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)比较元素的大小关系,从而实现了降序排列。
阅读全文