java strea 排序
时间: 2024-05-14 22:14:31 浏览: 13
Java Stream 提供了多种排序方法,可以根据不同的需求进行选择。
1. sorted()
使用 sorted() 方法可以对 Stream 中的元素进行自然排序(升序),例如:
```
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);
list.stream().sorted().forEach(System.out::println);
```
输出结果为:
```
1
1
2
3
4
5
5
6
9
```
2. sorted(Comparator<T> comparator)
如果需要对 Stream 中的元素进行定制排序,可以使用 sorted(Comparator<T> comparator) 方法,并传入一个 Comparator 接口实现类,例如:
```
List<String> list = Arrays.asList("apple", "banana", "pear", "orange");
list.stream().sorted((s1, s2) -> s1.length() - s2.length()).forEach(System.out::println);
```
输出结果为:
```
pear
apple
banana
orange
```
上述代码中,使用了 Lambda 表达式实现了一个根据字符串长度升序排序的 Comparator 接口实现类。
3. sorted(Comparator<T> comparator).reversed()
如果需要进行降序排序,可以在 sorted(Comparator<T> comparator) 方法后调用 reversed() 方法,例如:
```
List<String> list = Arrays.asList("apple", "banana", "pear", "orange");
list.stream().sorted((s1, s2) -> s1.length() - s2.length()).reversed().forEach(System.out::println);
```
输出结果为:
```
orange
banana
apple
pear
```
上述代码中,使用了 Lambda 表达式实现了一个根据字符串长度升序排序的 Comparator 接口实现类,并在 sorted() 方法后调用 reversed() 方法,实现了降序排序。
4. sorted(Comparator<T> comparator).limit()
如果需要对排序结果进行截取,可以在 sorted(Comparator<T> comparator) 方法后调用 limit() 方法,例如:
```
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);
list.stream().sorted().limit(3).forEach(System.out::println);
```
输出结果为:
```
1
1
2
```
上述代码中,使用了 sorted() 方法进行排序,并在其后调用 limit(3) 方法,表示只取排序结果中的前三个元素。
5. sorted(Comparator<T> comparator).skip()
如果需要对排序结果进行跳过,可以在 sorted(Comparator<T> comparator) 方法后调用 skip() 方法,例如:
```
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);
list.stream().sorted().skip(3).forEach(System.out::println);
```
输出结果为:
```
3
4
5
5
6
9
```
上述代码中,使用了 sorted() 方法进行排序,并在其后调用 skip(3) 方法,表示跳过排序结果中的前三个元素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)