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

掌握Java Stream方法(零基础入门Stream API与函数式编程)

在现代Java开发中,Java Stream方法已经成为处理集合数据的主流方式。它不仅让代码更简洁,还支持函数式编程风格,大大提升了开发效率和可读性。本教程将从零开始,带你全面了解Stream API教程中的核心概念和常用操作,即使你是编程小白,也能轻松上手!

掌握Java Stream方法(零基础入门Stream API与函数式编程) Java Stream方法  Java流式处理 Stream API教程 Java函数式编程 第1张

什么是Java Stream?

Stream 是 Java 8 引入的一个强大工具,用于对集合(如 List、Set 等)进行声明式的数据处理。它不是数据结构,而是一种“数据流水线”,可以对数据进行过滤、映射、排序、聚合等操作。

使用 Java流式处理,你可以用几行代码完成过去需要多层循环才能实现的功能。

创建Stream的几种方式

最常见的方式是从集合创建:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Diana");Stream<String> stream = names.stream();  

也可以直接用 Stream.of() 创建:

Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);  

常用Stream操作详解

1. filter(过滤)

筛选出满足条件的元素:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);List<Integer> evenNumbers = numbers.stream()                                    .filter(n -> n % 2 == 0)                                    .collect(Collectors.toList());// 结果:[2, 4, 6]  

2. map(映射)

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

List<String> words = Arrays.asList("apple", "banana", "cherry");List<String> upperWords = words.stream()                               .map(String::toUpperCase)                               .collect(Collectors.toList());// 结果:["APPLE", "BANANA", "CHERRY"]  

3. sorted(排序)

List<String> sortedNames = names.stream()                                .sorted()                                .collect(Collectors.toList());// 结果:["Alice", "Bob", "Charlie", "Diana"](按字母顺序)  

4. collect(收集结果)

将Stream处理后的结果转回集合:

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

完整示例:综合使用Stream

假设我们有一个学生列表,想找出年龄大于18岁、名字以“A”开头的学生,并按年龄升序排列:

class Student {    String name;    int age;        public Student(String name, int age) {        this.name = name;        this.age = age;    }        // getter省略}List<Student> students = Arrays.asList(    new Student("Alice", 20),    new Student("Bob", 17),    new Student("Anna", 22),    new Student("Alex", 19));List<Student> filteredStudents = students.stream()    .filter(s -> s.age > 18)    .filter(s -> s.name.startsWith("A"))    .sorted(Comparator.comparingInt(s -> s.age))    .collect(Collectors.toList());// 结果:Alex(19), Alice(20), Anna(22)  

注意事项

  • Stream只能被消费一次,重复使用会抛出异常。
  • 中间操作(如 filter、map)是惰性的,只有遇到终端操作(如 collect、forEach)才会执行。
  • 尽量避免在Stream中产生副作用(如修改外部变量)。

总结

通过本教程,你已经掌握了 Java Stream方法 的基本用法。无论是过滤、映射还是排序,Stream API 都能让你的代码更简洁、更具可读性。结合 Java函数式编程 的思想,你可以写出更现代、更高效的 Java 代码。

建议多动手练习,尝试将传统 for 循环改写为 Stream 操作,你会感受到它的强大之处!