使用stream流
时间: 2025-05-15 11:58:37 浏览: 18
Stream(流)是Java 8引入的一个强大的功能,用于简化集合数据的操作。它并不是一种新的数据结构,而是基于已有的数据源(如Collection、数组等)提供的一种高层次的抽象操作方式。通过流式计算可以更简洁地表达复杂的数据处理流程。
### Stream 的基本特点:
- **流水线**:许多操作会返回一个新流以便进一步加工。
- **内部迭代**:不同于传统的for-each显式的外部控制遍历过程,在这里一切都是自动完成的。
- **惰性求值**:大部分中间步骤并不会立刻生效直到终端运算触发整个链条开始运作起来为止.
#### 创建 Stream 流
可以从各种来源创建流对象比如列表(list), 集合(set) 等容器类型甚至普通数组也能轻松转型成对应形态供后续调用方法链式组合发挥强大作用:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> streamFromList = list.stream();
int[] numbers = {1, 2, 3};
IntStream streamFromArray = Arrays.stream(numbers);
```
#### 常见操作示例
##### 过滤(filter)
过滤掉不符合条件的所有元素只保留满足predicate测试的结果留下形成新的子序列继续参与下一轮变换环节当中去.
```java
// 找出长度大于5的单词
List<String> filteredWords = words.stream()
.filter(word -> word.length() > 5)
.collect(Collectors.toList());
```
##### 映射(map)
将当前项按照指定规则映射成为另一个值后再组成结果集呈现出来给用户查看分析利用价值所在之处体现在哪里就变得非常直观易懂了.
```java
// 将所有数字平方化
List<Integer> squaredNumbers = nums.stream()
.map(n -> n * n)
.collect(Collectors.toList());
```
##### 排序(sorted)
根据自然顺序或者自定义比较器对整体项目群组实施升序降序调整安排部署使之呈现出条理清晰明了的状态面貌特征形象鲜明突出重点难点关键点一目了然毫无遮掩隐瞒之嫌疑虑全无信心倍增勇气十足奋力前行勇往直前绝不退缩半步不止追求完美极致境界永不停歇奋斗拼搏精神代代相传生生不息绵延悠长经久远传颂千古留芳百世敬仰景慕之情油然而生感慨万千难以言表只能付诸笔端倾诉心声寄托情思遥想当年峥嵘岁月稠不禁热泪盈眶潸然泪下呜呼哀哉痛惜不已怎奈天命难违人事代谢往来古今兴衰成败得失荣辱悲欢离合喜怒哀乐种种情境皆因缘际遇造化弄人所致焉能尽随心意所欲为乎?但愿世间美好事物常驻人心永不磨灭方好耳!
```java
// 按字母排序并去除重复项后的字符串们
Set<String> sortedUniqueStrings = strings.parallelStream()
.distinct()
.sorted()
.collect(Collectors.toSet());
```
阅读全文
相关推荐















