.stream()
时间: 2025-05-17 18:17:16 浏览: 11
`.stream()` 是 Java 8 引入的一个重要特性,它是集合框架的一部分。通过 `Stream` API,可以对数据源(如数组、列表等)进行高效的操作和处理。它本身并不是一种数据结构,而是一种用于操作数据的工具。
### `.stream()` 的基本作用
1. **生成流**:将一个集合(例如 List 或 Set)、数组或其他数据源转换成一个 Stream 流。
2. **支持链式调用**:可以在流上应用一系列中间操作(如过滤、映射等),最后再使用终端操作完成结果计算。
---
#### 核心概念
1. **数据源 (Source)**
数据来源可以是一个集合、数组或者其他数据提供者。比如:List<Integer> list = Arrays.asList(1, 2, 3);
2. **中间操作 (Intermediate Operations)**
中间操作不会直接返回最终结果,而是返回一个新的流,并允许进一步链式调用。常见的中间操作有:
- `filter(Predicate)` 过滤元素;
- `map(Function)` 将每个元素按照规则转化为另一种形式;
- `sorted(Comparator)` 对流中的元素排序;
3. **终止操作 (Terminal Operation)**
终止操作会触发实际的数据处理过程并得出结果。一旦执行了终结操作,则该流无法再次使用。常见的终止操作包括:
- `forEach(Consumer)` 遍历流中所有元素;
- `collect(Collectors)` 收集结果到特定容器;
- `reduce(BinaryOperator)` 聚合运算;
4. **惰性求值**
只有当遇到终止操作时才会真正开始执行之前定义的所有步骤。
---
#### 示例代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 创建原始数据
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 使用 stream() 实现筛选+转化
names.stream()
.filter(name -> name.startsWith("A")) // 筛选出名字以 'A' 开头的人
.map(String::toUpperCase) // 把名字转大写
.forEach(System.out::println); // 输出结果
/*
* 结果为:
* ALICE
*/
}
}
```
---
阅读全文
相关推荐









