java中stream流实现排序加序号
时间: 2024-09-30 08:07:25 浏览: 42
在Java中,Stream API提供了一种高效的方式来处理集合数据,并可以对元素进行排序的同时附加编号。你可以使用`IntStream`结合`sorted()`方法以及`iterate()`函数来实现这个功能。下面是一个例子:
```java
import java.util.Arrays;
import java.util.IntStream;
List<Integer> numbers = Arrays.asList(5, 2, 8, 1);
// 创建一个从0开始递增的整数流
IntStream.Builder intStreamBuilder = IntStream.builder().start(0);
// 对列表排序并添加顺序号
numbers.stream()
.map(intStreamBuilder::add)
.sorted()
.forEachOrdered(System.out::println);
// 输出结果类似:0, 1, 2, 3 (因为列表是从0开始编号的)
// 现在将intStreamBuilder的结果转换回列表
List<Integer> sortedWithNumbers = intStreamBuilder.build().boxed().collect(Collectors.toList());
```
在这个示例中,我们首先创建了一个`IntStream`,然后通过`map`操作将每个原始数字映射到流中,再使用`sorted()`进行排序,最后通过`forEachOrdered`按照顺序打印出来。
阅读全文