返回
Java 中的 Stream:入门指南
后端
2024-01-30 22:03:54
在Java中,Stream(流)是一种用于操作集合(Collection)、数组等数据源的API。它提供了一种功能强大且表达力高的编程模型,可以用更简洁、更具可读性的方式处理数据。Stream的主要
引言
Java 8 引入了 Stream API,为处理数据集合提供了一种更具表达力、更简洁的途径。Stream 是一个抽象概念,代表一个数据元素序列,这些元素可以从各种来源获取,例如集合、数组甚至 I/O 源。
Stream 的优势
- 懒计算: Stream 操作不会立即执行,而是创建一系列延迟操作,只有在需要时才执行。这使得 Stream 非常高效,特别是对于大数据集。
- 可组合性: Stream API 提供了许多中间操作,可以轻松组合起来创建复杂的数据处理管道。这些操作可以对 Stream 中的元素进行筛选、映射、排序和其他转换。
- 表达性: Stream 操作使用直观的方法调用来表示,这使得代码更加简洁易读,从而减少了认知开销。
创建 Stream
可以通过以下几种方式创建 Stream:
- 从集合创建:
Collection.stream()
- 从数组创建:
Arrays.stream()
- 从 I/O 源创建:
Files.lines()
、BufferedReader.lines()
中间操作
中间操作用于转换 Stream 中的元素,创建新的 Stream。它们不立即改变源 Stream,而是返回一个新的 Stream,其中包含转换后的元素。常见的中间操作包括:
- filter(): 筛选元素
- map(): 映射元素
- sorted(): 对元素进行排序
- distinct(): 删除重复元素
终端操作
终端操作用于对 Stream 中的元素执行最终操作,并返回一个结果。它们消耗 Stream,并且不能返回一个新的 Stream。常见的终端操作包括:
- forEach(): 对每个元素执行操作
- reduce(): 将元素归约为单个值
- collect(): 将元素收集到集合或其他数据结构
示例
以下示例演示了如何使用 Stream 查找并打印一个集合中所有大于 10 的数字:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 11, 12, 13);
numbers.stream()
.filter(n -> n > 10)
.forEach(System.out::println);
结论
Java Stream API 提供了一种强大且直观的方式来处理数据集合。它基于懒计算和可组合性的理念,使代码更简洁、更具可读性,同时还能优化数据处理任务的性能。掌握 Stream API 可以显著提高 Java 程序员的生产力和代码质量。