Java stream 排序
时间: 2025-05-22 18:59:05 浏览: 19
### 使用 Java Stream API 进行排序
Java Stream API 提供了强大的工具来简化集合的操作,其中包括排序功能。下面是一个具体的例子,展示如何使用 `Stream` 对象的 `sorted()` 方法对列表进行排序。
#### 基本语法
可以调用 `stream().sorted()` 来对集合中的元素按照自然顺序进行升序排列;如果想要自定义排序规则,则可以通过传递比较器给 `sorted(Comparator<? super T> comparator)` 方法完成[^3]。
#### 升序排序整数列表
对于简单的数值型数据可以直接应用默认的升序排序:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class SortExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(7, 6, 9, 3, 8);
// 排序后的结果存储在一个新的列表中
List<Integer> sortedNumbersAsc = numbers.stream()
.sorted() // 默认为升序
.collect(Collectors.toList());
System.out.println(sortedNumbersAsc); // 输出 [3, 6, 7, 8, 9]
}
}
```
#### 自定义排序规则
当需要根据某些条件来进行排序时,比如字符串长度或者对象属性值大小等复杂情况,就需要传入一个 Comparator 实例作为参数:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private String name;
private int age;
public Person(String n, int a){
this.name=n;this.age=a;
}
@Override
public String toString(){
return "Person{name='" +name+"' ,age="+age+"}";
}
// getter 和 setter...
}
public class CustomSortExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>(Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20)));
// 按年龄降序排序
List<Person> sortedPeopleByAgeDesc = people.stream()
.sorted(Comparator.comparingInt(Person::getAge).reversed())
.collect(Collectors.toList());
System.out.println(sortedPeopleByAgeDesc);
// 或者按名字字母表顺序升序排序
List<Person> sortedPeopleByNameAsc = people.stream()
.sorted(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
System.out.println(sortedPeopleByNameAsc);
}
}
```
这些代码片段说明了如何利用 Java Stream API 的灵活性和强大能力轻松实现各种类型的排序需求[^4]。
阅读全文
相关推荐




















