.stream().filter如何加入排序
时间: 2024-10-18 10:02:49 浏览: 17
Java.Stream和方法引用
在Java Stream API中,如果你想要对流中的元素进行过滤后排序,通常是在`filter()`之后使用`sorted()`方法。这两个方法可以组合起来,示例如下:
```java
List<Integer> numbers = Arrays.asList(5, 3, 9, 1, 6);
List<Integer> sortedNumbers = numbers.stream()
.filter(number -> number > 3) // 过滤出大于3的数
.sorted() // 对剩下的数字进行排序
.collect(Collectors.toList());
```
在这个例子中,首先通过`.filter()`过滤出所有大于3的整数,然后`.sorted()`将这些数按升序排列。最后,`.collect()`将处理后的流转换回列表。
如果你想自定义排序规则,可以传递一个Comparator给`sorted()`方法,如下所示:
```java
List<String> names = ...;
List<String> sortedNames = names.stream()
.filter(name -> !name.isEmpty()) // 过滤掉空字符串
.sorted(Comparator.comparing(String::length)) // 按长度降序排序
.collect(Collectors.toList());
```
这里会按照字符串的长度进行降序排列。
阅读全文