Stream流排序方法
时间: 2025-03-09 12:12:19 浏览: 40
### Java Stream 排序方法实例
对于Java Stream API中的排序操作,可以利用`stream.sorted()`方法实现。此方法返回一个新的流,在该新流中按照自然顺序对元素进行了排序;如果希望自定义排序逻辑,则可向其传递比较器作为参数[^1]。
下面给出一段基于对象属性进行排序的例子:
```java
import java.util.*;
import java.util.stream.Collectors;
class Qux implements Comparable<Qux> {
private String name;
private Integer value;
public Qux(String name, Integer value) {
this.name = name;
this.value = value;
}
@Override
public int compareTo(Quux o) {
return this.getValue().compareTo(o.getValue());
}
// Getters and setters omitted for brevity.
}
public class Main {
public static void main(String[] args) {
List<Qux> barCollection = Arrays.asList(
new Qux("a", 3),
new Qux("b", 1),
new Qux("c", 2)
);
Stream<Qux> stream = barCollection.stream()
.sorted();
List<Qux> sortedList = stream.collect(Collectors.toList());
sortedList.forEach(item -> System.out.println(item.getName() + ": " + item.getValue()));
}
}
```
当涉及到更复杂的排序需求时,比如根据类的不同字段或者降序排列等场景下,可以通过提供Comparator来完成定制化排序。
#### 使用 Comparator 进行多条件排序
```java
// 对于复杂排序情况下的例子如下所示:
barCollection.stream()
.sorted(Comparator.comparing((Qux q) -> q.getValue())
.thenComparing(q -> q.getName()))
.forEach(System.out::println);
```
上述代码片段展示了如何先依据数值升序再按名称字母表顺序来进行双重排序。
阅读全文
相关推荐


















