stream 实现排序
时间: 2023-11-08 12:05:06 浏览: 42
可以使用 Java 8 中的流(Stream)来实现排序。通过 Stream API 提供的 sorted() 方法可以对流中的元素进行排序,通过传入 Comparator 实现自定义排序规则。
例如,可以使用下面的代码按照字符串长度从小到大排序:
```
List<String> list = Arrays.asList("apple", "banana", "pear", "orange");
List<String> sortedList = list.stream()
.sorted(Comparator.comparingInt(String::length))
.collect(Collectors.toList());
System.out.println(sortedList); // 输出 [pear, apple, banana, orange]
```
相关问题
stream流实现排序
stream流可以很方便地实现排序操作。在Java中,可以使用Stream API来进行排序。下面是一个示例代码,演示了如何使用stream流进行排序:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class StreamSortExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 9, 3);
// 升序排序
List<Integer> sortedAsc = numbers.stream()
.sorted()
.toList();
System.out.println("升序排序结果:" + sortedAsc);
// 降序排序
List<Integer> sortedDesc = numbers.stream()
.sorted(Comparator.reverseOrder())
.toList();
System.out.println("降序排序结果:" + sortedDesc);
}
}
```
在上面的示例中,我们首先创建了一个包含一些整数的列表。然后使用`stream()`方法将列表转换为Stream对象。接下来,我们使用`sorted()`方法对流进行排序。可以使用默认的自然排序,也可以通过传递自定义的比较器来指定排序规则。最后,我们使用`toList()`方法将排序后的流转换为列表并打印出来。
运行上述代码将输出:
```
升序排序结果:[1, 2, 3, 5, 8, 9]
降序排序结果:[9, 8, 5, 3, 2, 1]
```
这样,我们就利用stream流实现了排序操作。你可以根据自己的需求,使用不同的比较器来实现各种不同的排序方式。
stream 动态排序
Stream动态排序是指根据一定的规则对Stream中的元素进行排序。Java 8中提供了两个方法对Stream进行排序,分别是sorted()和sorted(Comparator<? super T> comparator)。
sorted()方法会默认使用元素的自然顺序进行排序,例如对于Stream<Integer>,会按照从小到大的顺序进行排序。
sorted(Comparator<? super T> comparator)方法可以接受一个Comparator接口实现作为参数,该方法会使用Comparator接口实现来进行排序。例如,可以使用下面的代码按照字符串长度对Stream<String>进行排序:
```
Stream<String> stream = Stream.of("apple", "banana", "orange", "pear");
List<String> sortedList = stream.sorted((s1, s2) -> s1.length() - s2.length())
.collect(Collectors.toList());
```
在这个例子中,我们通过sorted方法传递了一个Comparator实现,该实现比较两个字符串的长度,并按照长度升序排序。
需要注意的是,对于无序的Stream(例如通过HashSet创建的Stream),排序操作可能会改变元素的顺序。如果需要保证元素的顺序不变,可以使用sorted方法的稳定版本sorted(Comparator<? super T> comparator),该方法会保证相等的元素的顺序不变。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.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)