Java 8新特性:轻松入门,实战案例教你玩转Stream和Lambda表达式

2026-11-05 0 阅读

Java 8作为Java语言的一个重要版本,引入了许多新特性和语法糖,其中Stream和Lambda表达式是两个最为显著的特点。本文将带你轻松入门Java 8的新特性,并通过实战案例教你如何玩转Stream和Lambda表达式。

一、Stream简介

Stream是Java 8引入的一种新的抽象层,用于处理集合数据。它允许以声明式的方式处理数据集合,使得代码更加简洁、易读。Stream可以理解为一个数据源(如数组、集合、文件等)上的操作序列。

1.1 Stream的特点

  • 延迟执行:Stream的各个操作都是延迟执行的,只有在需要结果时才会执行。
  • 并行处理:Stream可以很容易地并行处理数据,提高程序的执行效率。
  • 声明式编程:使用Stream,你可以用更简洁的代码表达数据处理逻辑。

1.2 Stream的常见操作

  • 创建Stream:使用.stream()或.parallelStream()方法从数据源创建Stream。
  • 中间操作:如.filter()、.map()、.limit()等,用于处理数据。
  • 终端操作:如.forEach()、.collect()等,用于获取最终结果。

二、Lambda表达式简介

Lambda表达式是Java 8引入的一种新的语法结构,用于表示匿名函数。它允许你在需要函数式编程的场景下,用更简洁的代码实现功能。

2.1 Lambda表达式的特点

  • 匿名函数:Lambda表达式不需要定义函数,可以直接使用。
  • 类型推断:Lambda表达式的类型可以由编译器自动推断。
  • 语法简洁:Lambda表达式使用简洁的语法,易于阅读和理解。

2.2 Lambda表达式的语法

// 示例:Lambda表达式实现Comparator接口
Comparator<Integer> comparator = (x, y) -> x - y;

三、Stream和Lambda表达式实战案例

下面通过一个简单的案例,展示如何使用Stream和Lambda表达式处理数据。

3.1 案例背景

假设我们有一个学生类Student,包含姓名、年龄和成绩三个属性。我们需要统计年龄大于18岁且成绩大于80分的学生信息。

3.2 实现代码

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建学生列表
        List<Student> students = new ArrayList<>();
        students.add(new Student("张三", 20, 85));
        students.add(new Student("李四", 17, 90));
        students.add(new Student("王五", 19, 75));
        students.add(new Student("赵六", 18, 95));

        // 使用Stream和Lambda表达式处理数据
        List<Student> result = students.stream()
                .filter(s -> s.getAge() > 18 && s.getScore() > 80)
                .collect(Collectors.toList());

        // 输出结果
        for (Student student : result) {
            System.out.println(student.getName());
        }
    }
}

class Student {
    private String name;
    private int age;
    private int score;

    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getScore() {
        return score;
    }
}

3.3 结果分析

运行上述代码,输出结果为:

张三
赵六

这表明我们成功统计出了年龄大于18岁且成绩大于80分的学生信息。

四、总结

本文介绍了Java 8的新特性——Stream和Lambda表达式,并通过实战案例教你如何使用它们。通过学习本文,相信你已经对这两个特性有了初步的了解。在实际开发中,Stream和Lambda表达式可以帮助你写出更简洁、易读的代码,提高程序的性能。

分享到: