stream流的sorted使用方式
时间: 2023-08-17 19:51:01 浏览: 200
.stream().sorted() 方法用于对流中的元素进行排序。排序可以按照自然顺序(默认)或者通过自定义的比较器进行。
以下是一些示例使用方式:
1. 排序自然顺序:
```java
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 9);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
```
在上述示例中,我们将数字列表排序,并将结果收集为一个新的列表。输出的结果是 [1, 2, 5, 8, 9],按照升序排列。
2. 使用自定义比较器进行排序:
```java
List<String> names = Arrays.asList("John", "Alice", "Bob", "David");
List<String> sortedNames = names.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
```
在上述示例中,我们使用 Comparator.reverseOrder() 方法来创建一个降序的比较器,然后对字符串列表进行排序。输出的结果是 ["John", "David", "Bob", "Alice"]。
3. 对自定义对象进行排序:
```java
class Person {
private String name;
private int age;
// constructor, getters, setters
@Override
public String toString() {
return name + " - " + age;
}
}
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Alice", 30),
new Person("Bob", 20)
);
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getAge))
.collect(Collectors.toList());
```
在上述示例中,我们对 Person 对象列表按照年龄进行升序排序。输出的结果是 [Bob - 20, John - 25, Alice - 30]。
请注意,sorted() 方法返回一个新的有序流,原始流的顺序不会受到改变。如果您想要修改原始流的顺序,可以使用 sorted() 后面的 collect() 或者 forEach() 方法。
阅读全文