当前位置:首页 > Java > 正文

掌握 Java Stream API(零基础入门流式数据处理)

在 Java 8 中,Oracle 引入了一个革命性的功能 —— Stream API。它让开发者能够以声明式、函数式的方式处理集合数据,大大简化了代码逻辑,提高了可读性和开发效率。无论你是刚接触 Java 的小白,还是有一定经验的开发者,掌握 Java Stream API 都是提升编程能力的关键一步。

掌握 Java Stream API(零基础入门流式数据处理) API 函数式编程 流式处理 8新特性 第1张

什么是 Stream?

Stream(流)不是数据结构,而是一种对数据进行操作的抽象。你可以把它想象成一条“流水线”:数据从源头(如 List、Set、数组等)流入,经过一系列中间操作(如过滤、映射、排序),最后通过一个终止操作(如收集、打印)得到结果。

Stream 的核心特点包括:

  • 不会修改原始数据源(不可变性)
  • 支持链式调用(方法链)
  • 延迟执行(只有遇到终止操作才真正执行)
  • 支持并行处理(parallelStream)

基本使用步骤

使用 Stream 通常分为三步:

  1. 创建流:从集合、数组或静态方法生成
  2. 中间操作:filter、map、sorted 等(可链式调用)
  3. 终止操作:collect、forEach、count 等(触发执行)

实战示例

假设我们有一个学生列表,包含姓名和年龄,我们想筛选出年龄大于 18 岁的学生,并按姓名排序后输出。

// 定义 Student 类class Student {    String name;    int age;        public Student(String name, int age) {        this.name = name;        this.age = age;    }        @Override    public String toString() {        return name + "(" + age + ")";    }}// 使用 Stream API 处理List<Student> students = Arrays.asList(    new Student("张三", 20),    new Student("李四", 17),    new Student("王五", 22),    new Student("赵六", 19));List<Student> adults = students.stream()    .filter(s -> s.age > 18)          // 过滤:只保留年龄 > 18 的    .sorted((s1, s2) -> s1.name.compareTo(s2.name)) // 按姓名排序    .collect(Collectors.toList());     // 收集为 Listadults.forEach(System.out::println);// 输出:// 王五(22)// 张三(20)// 赵六(19)  

常用 Stream 操作详解

1. filter(过滤)

用于筛选满足条件的元素。

list.stream().filter(x -> x > 5).forEach(System.out::println);

2. map(映射)

将每个元素转换为另一种形式。

List<String> names = students.stream()    .map(Student::getName)    .collect(Collectors.toList());

3. sorted(排序)

自然排序或自定义排序。

list.stream().sorted().collect(Collectors.toList());

4. collect(收集)

将流的结果收集到集合中,最常用的终止操作。

List<Integer> result = stream.collect(Collectors.toList());

为什么学习 Stream API 很重要?

作为 Java 8新特性 的核心组成部分,Stream API 极大地推动了 Java 向 函数式编程 的演进。它不仅让代码更简洁,还天然支持 流式处理 大量数据,甚至可以轻松切换为并行流以利用多核 CPU 提升性能。

对于现代 Java 开发者来说,熟练使用 Java Stream API 已成为基本技能。无论是处理数据库查询结果、解析 JSON 数据,还是进行数据分析,Stream 都能让你事半功倍。

小结

本教程带你从零开始认识了 Java Stream API,了解了它的基本概念、使用流程和常见操作。记住:Stream 不是集合,而是对集合的操作管道;中间操作不执行,只有终止操作才会触发整个流水线。

建议你动手写几个例子,比如从字符串列表中筛选长度大于 3 的单词、计算数字列表的平方和等,加深理解。当你习惯这种 函数式编程 的思维方式后,你会发现代码变得更优雅、更易维护!