Stream流所有方法详解
时间: 2024-06-08 19:09:11 浏览: 131
Stream流常用方法
Stream 是 Java 8 引入的一个新特性,它可以用来处理集合或数组等数据源中的元素。Stream 提供了一种更加优雅、高效的方式来处理数据,代码可读性更强、更易维护。在 Stream 中,操作是延迟执行的,只有当需要结果的时候才会进行计算,这样就可以避免不必要的计算,提高程序的性能。
下面是 Stream 中常用的方法:
1. filter:过滤操作
该方法可以根据给定的条件过滤出符合条件的元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().filter(i -> i % 2 == 0); // 过滤出偶数
```
2. map:映射操作
该方法可以将 Stream 中的每个元素按照给定的规则进行映射,返回一个新的 Stream。
```
List<String> list = Arrays.asList("hello", "world", "java");
Stream<String> stream = list.stream().map(String::toUpperCase); // 将字符串转换为大写
```
3. flatMap:扁平化操作
该方法可以将一个包含多个 Stream 的 Stream 扁平化为一个单一的 Stream。
```
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<Integer> stream = list.stream().flatMap(Collection::stream); // 将多个 Stream 扁平化成一个 Stream
```
4. distinct:去重操作
该方法可以去除 Stream 中重复的元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 2, 1);
Stream<Integer> stream = list.stream().distinct(); // 去重
```
5. sorted:排序操作
该方法可以对 Stream 中的元素进行排序,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(3, 1, 2, 5, 4);
Stream<Integer> stream = list.stream().sorted(); // 排序
```
6. limit:截取操作
该方法可以截取 Stream 前面的 N 个元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().limit(3); // 截取前面的三个元素
```
7. skip:跳过操作
该方法可以跳过 Stream 前面的 N 个元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().skip(3); // 跳过前面的三个元素
```
8. forEach:遍历操作
该方法可以对 Stream 中的每个元素进行操作,没有返回值。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().forEach(System.out::println); // 输出每个元素
```
9. count:计数操作
该方法可以返回 Stream 中元素的个数。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long count = list.stream().count(); // 计算元素的个数
```
10. reduce:归约操作
该方法可以将 Stream 中的所有元素按照给定的规则进行归约,返回一个 Optional 类型的结果。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> result = list.stream().reduce((a, b) -> a + b); // 对元素求和
```
这些方法只是 Stream 中的一部分,Stream 还有很多其他的方法,可以根据具体需求进行选择和使用。
阅读全文