stream流方法详解
时间: 2025-01-02 12:33:25 浏览: 6
### Java Stream API 方法详解及使用示例
#### 创建 Stream 流
可以通过多种方式来创建 Stream 流。最常见的方式是从集合类创建,也可以从数组或其他源创建。
```java
// 从列表创建流
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> streamFromList = list.stream();
// 从数组创建流
String[] fruits = {"apple", "banana", "orange"};
Stream<String> streamFromArray = Arrays.stream(fruits);
```
#### 过滤元素 `filter`
`filter` 接受一个谓词作为参数,并返回一个新的流,该流只包含满足条件的元素[^2]。
```java
// 找出长度大于5的字符串
Stream<String> filteredStream = streamFromList.filter(s -> s.length() > 5);
filteredStream.forEach(System.out::println); // 输出 banana, orange
```
#### 映射元素 `map`
`map` 将每个输入元素按照指定函数转换成另一个输出元素,形成新的流[^1]。
```java
// 将所有水果名称转为大写
Stream<String> upperCaseFruits = streamFromList.map(String::toUpperCase);
upperCaseFruits.forEach(System.out::println); // 输出 APPLE, BANANA, ORANGE
```
#### 收集结果 `collect`
当完成所有的中间操作之后,通常会调用终端操作如 `collect(Collectors.toList())` 来收集最终的结果[^3]。
```java
// 转换后的结果存入新列表
List<String> resultList = streamFromList.collect(Collectors.toList());
System.out.println(resultList); // 输出 [apple, banana, orange]
```
#### 并行处理 `parallel`
为了利用多核处理器的优势,可以将串行流转换为并行流来进行更高效的计算。
```java
// 使用并行流加速过滤过程
streamFromList.parallel().filter(s -> s.startsWith("a")).forEach(System.out::println);
```
阅读全文